POJ - 3190 Stall Reservations
#include<iostream>
#include<algorithm>
#include<queue>
#define x first
#define y second
using namespace std;
typedef pair<int,int>PII;
const int N = 50010;
pair<PII,int>cows[N];
int id[N];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>cows[i].x.x>>cows[i].x.y;
cows[i].y=i;
}
sort(cows,cows+n);
priority_queue<PII,vector<PII>,greater<PII> >heap;
for(int i=0;i<n;i++)
{
PII cow=cows[i].x;
if(heap.empty() || heap.top().x>=cow.x)
{
//PII stall={cow.y,heap.size()}; POJ编译错误
PII stall;stall.x=cow.y,stall.y=heap.size();
id[cows[i].y]=stall.y;
heap.push(stall);
}
else
{
PII stall=heap.top();
heap.pop();
stall.x=cow.y;
id[cows[i].y]=stall.y;
heap.push(stall);
}
}
cout<<heap.size()<<endl;
for(int i=0;i<n;i++) cout<<id[i]+1<<endl;
return 0;
}