3 条题解
-
-1
#include #include #include #include using namespace std; const int N = 50010; struct node{ int l, r, x; bool operator <(const node& a) const{ if(r == a.r) return l>a.l; return r>a.r; } }a[N];
priority_queue p; int n; bool cmp(node a, node b){ if(a.l == b.l) return a.r<b.r; return a.l<b.l; }
int ans[N]; int main(){ cin>>n; int res = 0; for(int i=1; i<=n; i++){ cin>>a[i].l>>a[i].r; a[i].x = i; } sort(a+1, a+n+1, cmp);
for(int i=1; i<=n; i++){ if(!p.empty() && p.top().r < a[i].l){ ans[a[i].x] = ans[p.top().x]; p.pop(); }else{ res++; ans[a[i].x] = res; } p.push(a[i]); } cout<<res<<endl; for(int i=1; i<=n; i++){ cout<<ans[i]<<endl; } return 0;
}
信息
- ID
- 23
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 163
- 已通过
- 98
- 上传者