将e按从大到小排序,统计前i-1个中比

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct Item
{
int s;
int e;
int x;
};
int n;
Item item[500010];
int a[500010],b[500010];
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ret=0;
while(x>0)
{
ret=ret+a[x];
x-=lowbit(x);
}
return ret;
}
void add(int x,int d)
{
while(x<500001)
{
a[x]+=d;
x+=lowbit(x);
}
}
bool cmp(Item a,Item b)
{
return a.e>b.e||((a.e==b.e)&&(a.s<b.s));
}
int main()
{
while(scanf("%d",&n)&&n)
{
memset(a,0,sizeof(a));
for(int i=0;i<n;i++)
{
scanf("%d%d",&item[i].s,&item[i].e);
item[i].s++,item[i].e++;
item[i].x=i;
}
sort(item,item+n,cmp);
b[item[0].x]=sum(item[0].s);
add(item[0].s,1);
for(int i=1;i<n;i++)
{
if(item[i].e==item[i-1].e&&item[i].s==item[i-1].s)
{
b[item[i].x]=b[item[i-1].x];
add(item[i].s,1);
}
else{
b[item[i].x]=sum(item[i].s);
add(item[i].s,1);
}
}
for(int i=0;i<n;i++)
cout<<b[i]<<" ";
cout<<endl;
}
return 0;
}

e小的个数,注意相等的情况

最新文章

  1. iOS开发——高级篇——iOS键盘的相关设置(UITextfield)
  2. asp.net项目中通过Web.config配置文件及文件夹的访问权限!
  3. python中argparse模块的使用
  4. sql临时表和表变量
  5. Basic Vlan Configure
  6. Yii2 composer更新后报错: Calling unknown method: yii\web\UrlManager::addRules()
  7. 移动App双周版本迭代实战--转载备用
  8. Session,ViewState用法
  9. 修改ORACLE的语言参数
  10. mysql 的not null 与 null的区别(转,恍然大悟)
  11. Position &amp; anchorPoint 深入
  12. JS杂记
  13. curl支持HTTP和https
  14. wget在linux中安装出现错误解决办法
  15. Java 删除ArrayList中重复元素,保持顺序
  16. js根据服务端返回的时间倒计时
  17. 01-Devops核心要点及Kubernetes架构概述
  18. Django学习笔记之视图高级-CSV文件生成
  19. eclipse中tomcat可以start启动,无法debug启动的解决
  20. blfs(systemv版本)学习笔记-配置远程连接显示中文

热门文章

  1. 【iOS】UICollectionView自己定义Layout之蜂窝布局
  2. Webserver管理系列:4、WinPE
  3. C++字符串操作笔试题第二波
  4. bzoj2756: [SCOI2012]奇怪的游戏(网络流+分情况)
  5. pgsql数据库备份还原记
  6. 终于意识到BIM确实火了
  7. 编 写高性能的 SQL 语句注意事项
  8. 《Unix环境高级编程》读书笔记 第5章-标准I/O流
  9. 查看Linux 服务器是 32位还是64位的
  10. KOA 框架