Pagini recente » Cod sursa (job #876790) | Cod sursa (job #725129) | Cod sursa (job #2077929) | Cod sursa (job #488625) | Cod sursa (job #432052)
Cod sursa(job #432052)
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int pred[100001],v[100001],x[100001],n;
int caut(int r, int n)
{
int i,pas=1<<16;
for(i=0;pas;pas>>=1)
if(i+pas<=n&&x[v[i+pas]]<r)
i+=pas;
return i+1;
}
void sir(int poz)
{
if(poz==0)
return;
sir(pred[poz]);
g<<x[poz]<<" ";
}
int main()
{
int i=0,r,y,nr=0;
f>>n>>x[++i];
v[++nr]=1;
while(f>>x[++i])
{
r=x[i];
y=caut(r,nr);
if(y>nr)
v[++nr]=i;
else
v[y]=i;
pred[i]=v[y-1];
}
g<<nr<<"\n";
sir(v[nr]);
return 0;
}