Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52250 | wssdr | 木板游戏 | C++ | 解答错误 | 65 | 167 MS | 4160 KB | 502 | 2022-07-19 11:51:06 |
#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); f[ans=1]=b[1].r; for(int i(2);i<=n;++i){ if(b[i].r>=f[ans]) f[++ans]=b[i].r; else f[lower_bound(f+1,f+1+ans,b[i].r)-f]=b[i].r; } printf("%d\n",ans); return 0; }