Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52516 | wssdr | 木板游戏 | C++ | 通过 | 100 | 171 MS | 4172 KB | 483 | 2022-07-19 12:27:45 |
#include<bits/stdc++.h> #define N 500005 using namespace std; int n,f[N],ans; struct Block{int l,r;}; struct Block b[N]; inline bool cmp(const Block&x,const Block&y){ return (x.l^y.l)?x.l>y.l:x.r<y.r; } int main(){ scanf("%d",&n); for(int i(1);i<=n;++i) scanf("%d%d",&b[i].l,&b[i].r); sort(b+1,b+1+n,cmp); for(int i(1);i<=n;++i){ if(b[i].r>=f[ans]) f[++ans]=b[i].r; else f[upper_bound(f+1,f+1+ans,b[i].r)-f]=b[i].r; } printf("%d\n",ans); return 0; }