| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:为什么二分会wa....In Reply To:为什么二分会wa.... Posted by:veasonapple at 2015-09-11 21:38:40 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<utility>
#define mod 1000000007
using namespace std;
int n, l, r, mid;
int ans[100010];
struct Cow
{
int s, e, id;
friend bool operator<(Cow a, Cow b);
}cow[100010];
bool operator<(Cow a, Cow b)
{
if (a.s > b.s)
{
return true;
}
else
{
if (a.s == b.s&&a.e<b.e)
{
return true;
}
}
return false;
}
int main()
{
while (cin >> n&&n)
{
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &cow[i].s, &cow[i].e);
cow[i].id = i;
}
sort(cow + 1, cow + n + 1);
for (int i = 1; i <= n; i++)
{
l = i, r = n;
while (l != r)
{
mid = (l + r) >> 1;
if (cow[mid + 1].e > cow[i].e || (cow[mid + 1].e == cow[i].e&&cow[mid + 1].s < cow[i].s))
{
l = mid + 1;
}
else
{
r = mid;
}
}
ans[cow[i].id] = l - i;
}
for (int i = 1; i < n; i++)
{
printf("%d ", ans[i]);
}
printf("%d\n", ans[n]);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator