Pagini recente » Cod sursa (job #2230281) | Cod sursa (job #2479497) | Cod sursa (job #1390350) | Cod sursa (job #2395209) | Cod sursa (job #1561360)
#include <fstream>
#define ValN 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int N, i, v[ValN];
int be, en, mid, x, mx;
int dp[ValN], inv[ValN];
int main()
{
fin >> N;
for (i=1; i<=N; i++)
{
fin >> v[i];
inv[i]=2000000000;
}
for (i=1; i<=N; i++)
{
be=1;
en=i-1;
x=0;
while (be<=en)
{
mid=(be+en) / 2;
if (inv[mid]>=v[i])
en=mid-1;
else
{
be=mid+1;
x=max(x, mid);
}
mid=(be+en) / 2;
}
dp[i]=max(dp[i], x+1);
mx=max(dp[i], mx);
inv[dp[i]]=min(inv[dp[i]], v[i]);
}
fout << mx;
fin.close();
fout.close();
return 0;
}