Pagini recente » Cod sursa (job #1446496) | Cod sursa (job #1437100) | Cod sursa (job #3168319) | Cod sursa (job #1223255) | Cod sursa (job #950418)
Cod sursa(job #950418)
#include <fstream>
using namespace std;
ifstream fin ("subsir2.in");
ofstream fout ("subsir2.out");
int s[5001],l,v[5001],n,i,ls,ld,m,ind[5001];
int main ()
{
fin>>n;
for (i=1;i<=n;i++) fin>>v[i];
s[1]=v[1]; l=1; ind[1]=1;
for (i=2;i<=n;i++)
{
if (v[i]>=s[l]) {s[++l]=v[i]; ind[l]=i;}
else
{
ls=1; ld=l;
while (ls<ld)
{
m=(ls+ld)/2;
if (v[i]>s[m]) ls=m+1;
else ld=m-1;
}
while (s[ls]<=v[i]) ls++;
s[ls]=v[i]; l=ls;
ind[l]=i;
}
}
fout<<l<<"\n";
for (i=1;i<=l;i++) fout<<ind[i]<<" ";
}