比赛 20120619 评测结果 AAAAAAAAAA
题目名称 免费午餐 最终得分 100
用户昵称 1azyReaper 运行时间 0.033 s
代码语言 C++ 内存使用 1.07 MiB
提交时间 2016-04-22 09:37:29
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#define MAXN 100015
using namespace std;
ifstream fin("lunch.in");
ofstream fout("lunch.out");
int n,a[MAXN],b[MAXN];
int main()
{
	int loc=0;
	fin>>n;
	for(int i=1;i<=n;i++)
		fin>>a[i];
	for(int i=1;i<=n;i++)
	{
		if(a[i]==0)
			continue;//第0天无效
		int l=1,r=loc,m;
		while(l<=r)//二分
		{
			m=(l+r)>>1;
			if(b[m]>a[i])
				l=m+1;
			else
				r=m-1;
		}
		loc=max(loc,l);
		b[l]=a[i];
	}
	fout<<loc<<endl;
	return 0;
}