比赛 20120619 评测结果 AAAAAAAAAA
题目名称 免费午餐 最终得分 100
用户昵称 临轩听雨ゐ 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-06-19 20:39:45
显示代码纯文本
#include <fstream>

using namespace std;

int a[100001]={0},b[100001]={0};

int main()
{
	ifstream in("lunch.in");
	ofstream out("lunch.out");
	int n,i,j;
	int mid,head,tail;
    int ans=0;
	in>>n;
    for (i=1;i<=n;i++)
		in>>a[i];
    for (i=n;i>=1;i--)
    {
        if (a[i]==0) 
			continue;
        head=1;
		tail=ans;
        while (head<=tail)
        {
			mid=(head+tail)/2;
            if (b[mid]<a[i]) 
				head=mid+1;
            else 
				tail=mid-1;
        }
        if (head>ans) 
			ans++;
        b[head]=a[i];
    }
    out<<ans<<endl;
    return 0;
}