Cod sursa(job #429615)
| Utilizator | Data | 30 martie 2010 12:19:23 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 65 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100001],n;
int caut(int x, int y)
{
int i,pas=1<<16;
for(i=0;pas;pas>>=1)
if(i+pas<=y&&v[i+pas]<x)
i+=pas;
if(v[i+1]<x)
return -1;
return i+1;
}
int main()
{
int i=1,x,y;
f>>n>>v[1];
while(f>>x)
{
y=caut(x,i);
if(y<0)
v[++i]=x;
else
v[y]=x;
}
g<<i<<"\n";
for(y=1;y<=i;y++)
g<<v[y]<<" ";
return 0;
}
