Pagini recente » Cod sursa (job #2968881) | Cod sursa (job #2736068) | Cod sursa (job #710043) | Cod sursa (job #2406409) | Cod sursa (job #2547821)
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("subsir2.in");
ofstream out("subsir2.out");
const int Max=5005;
int n; int v[Max],p[Max],h[Max],l[Max],poz[Max];
int cautbin(int x,int st,int dr)
{
int poz=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(x>=p[mij])
st=mij+1;
else
{
poz=mij;
dr=mij-1;
}
}
return poz;
}
int main()
{
in>>n; int nr=0;
for(int i=1;i<=n;i++)
{
in>>v[i];
int x=cautbin(v[i],1,nr);
if(x==-1)
{
p[++nr]=v[i];
l[i]=nr;
}
else
{
p[x]=v[i];
l[i]=x;
}
}
int lu=nr,k=0;
for(int i=n;i>=1;i--)
{
if(l[i]==lu)
{
poz[++k]=i;
lu--;
}
}
out<<nr<<"\n";
for(int i=k;i>=1;i--)
{
out<<poz[i]<<" ";
}
return 0;
}