Pagini recente » Cod sursa (job #1245655) | Cod sursa (job #2218140) | Cod sursa (job #1094055) | Cod sursa (job #1500196) | Cod sursa (job #1053222)
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int N, a[100010], Poz[100010], t[100010], k, mij, best=1, st, dr;
void afis(int k)
{
if(k!=0)
{
afis(t[k]); g<<a[k]<<" ";
}
}
int main ()
{
f>>N;
for (int i=1; i<=N; ++i) f>>a[i];
Poz[1]=1; st=1;
for (int i=2; i<=N; ++i)
{
st=1; dr=best;
while(st<=dr)
{
mij=(st+dr)>>1;
if (a[i]>a[Poz[mij]]) st=mij+1;
else dr=mij-1;
}
if(st>best) ++best;
Poz[st]=i; t[i]=Poz[st-1];
}
g<<best<<'\n'; afis(Poz[best]);
return 0;
}