Pagini recente » Cod sursa (job #1972251) | Cod sursa (job #1495721) | Cod sursa (job #2114062) | Cod sursa (job #769650) | Cod sursa (job #429786)
Cod sursa(job #429786)
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100001],n,poz[100001],z;
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(poz[i+2]<z&&poz[i+2])
return -2;
if(v[i+1]<x)
return -1;
return i+1;
}
int main()
{
int i=1,x,y;
f>>n>>v[1];
while(f>>x)
{
z++;
y=caut(x,i);
if(y==-1)
{
v[++i]=x;
poz[i]=z;
}
else
if(y>=0)
{
poz[y]=z;
v[y]=x;
}
}
g<<i<<"\n";
for(y=1;y<=i;y++)
g<<v[y]<<" ";
return 0;
}