| 记录编号 |
240777 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
825.[RQNOJ 167] 免费午餐 |
最终得分 |
100 |
| 用户昵称 |
LOSER |
是否通过 |
通过 |
| 代码语言 |
C++ |
运行时间 |
0.012 s |
| 提交时间 |
2016-03-23 17:55:25 |
内存使用 |
0.44 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#define mem(arr,arl) memset(arr,arl,siae)
using namespace std;
const int maxn=100010;
int len[maxn],h[maxn],ge[maxn];
int read(){
int f=1,x=0;
char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if (ch=='-')f=-1;
else x=ch-'0';
ch=getchar();
while (ch>='0'&&ch<='9') {
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int Find(int x,int l,int r){
if(r<l)return l;
int mid=(l+r)>>1;
if(len[mid]>x)Find(x,mid+1,r);
else Find(x,l,mid-1);
}
int MY(){
freopen("lunch.in","r",stdin);
freopen("lunch.out","w",stdout);
len[0]=0x7f7f7f;
int p;scanf("%d",&p);
for(int i=1;i<=p;i++){
scanf("%d",&h[i]);
if(!h[i])continue;
int z=Find(h[i],0,p);
ge[i]=z;
len[z]=h[i];
}
int ans=0;
for(int i=1;i<=p;i++)if(ans<ge[i])ans=ge[i];
printf("%d\n",ans);
return 0;
}
int YOU=MY();
int main(){;}