Pagini recente » Cod sursa (job #2393659) | Cod sursa (job #2311634) | Cod sursa (job #2819510) | Cod sursa (job #2181496) | Cod sursa (job #491411)
Cod sursa(job #491411)
#include <fstream>
using namespace std;
double v[1<<14],d[1<<14];
int a[1<<14],n,m;
bool prost[1<<14];
ifstream in("euro2.in");
ofstream out("euro2.out");
int bs(double x)
{
int i,step=1<<13;
for (i=0;step;step>>=1)
if (i+step<=m && d[i+step]<=x)
i+=step;
if (i==m)
m++;
d[i+1]=x;
return i+1;
}
int main()
{
int i,r=-1,q;
in>>n;
for (i=1;i<=n;i++)
in>>v[i];
for (i=1;i<=n;i++)
{
a[i]=bs(v[i]);
if (a[i]<2)
prost[i]=true;
}
m=0;
for (i=n;i;i--)
{
q=bs(v[i]);
if (q<=1)
prost[i]=true;
a[i]+=q-1;
}
for (i=1;i<=n;i++)
if (!prost[i])
r=max(r,a[i]);
out<<r<<"\n";
return 0;
}