Pagini recente » Cod sursa (job #1546452) | Cod sursa (job #1349889) | Cod sursa (job #149449) | Cod sursa (job #1928107) | Cod sursa (job #2341396)
#include <bits/stdc++.h>
#define Dim 100006
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int N,V[Dim],Q[Dim],P[Dim],lg,cnt;
int main()
{
f>>N;
for(int i=1;i<=N;i++) f>>V[i];
lg=1;
Q[1]=V[1];
for(int i=2;i<=N;i++)
{
int st=1,dr=lg;
int gasit=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(V[i]<=Q[mij])
{
gasit=mij;
dr=mij-1;
}
else
st=mij+1;
}
if(gasit==-1)
{
lg++;
Q[lg]=V[i];
P[++cnt]=lg;
}
else
{
Q[gasit]=V[i];
P[++cnt]=gasit;
}
}
g<<lg<<'\n';
for(int i=1;i<=lg;i++)
g<<Q[i]<<" ";
return 0;
}