Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
141174 | 林泽豪 | 宝藏 | C++ | 解答错误 | 0 | 0 MS | 272 KB | 642 | 2024-04-02 17:12:32 |
#include<bits/stdc++.h> using namespace std; const int N=100009; int f[N],top; struct Node{ int a,b; }node[N]; bool cmp(Node a,Node b){ return a.a <b.a; } int g(int x){ int l=1 ,r=top,res; while(l<=r){ int mid=(l+r)>>1; if(f[mid]>=x){ l=mid+1; if(f[l]<=x)break; }else { r=mid-1; } } return l; } int main(){ int n,m,p; cin>>n>>m>>p; for(int i=1;i<=p;i++)cin>>node[i].a >>node[i].b ; sort(node+1,node+p+1,cmp); for(int i=1;i<=n;i++){ if(node[i].b <f[top]||top==0)f[++top]=node[i].b ; else f[g(node[i].b )]=node[i].b ; } //for(int i=1;i<=top;i++)cout<<f[i]<<' '; cout<<top; }