Pagini recente » Cod sursa (job #1310251) | Cod sursa (job #301446) | Cod sursa (job #1157181) | Cod sursa (job #120667) | Cod sursa (job #271013)
Cod sursa(job #271013)
#include <fstream.h>
int x[5009],y[5009],n,l,k,sol[5009];
void cit()
{
int i;
ifstream fin("subsir2.in");
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x[i];
y[i]=i;
}
fin.close();
}
void poz(int li,int ls)
{
int i,j,ii,jj,c;
i=li; j=ls;
ii=0; jj=-1;
while(i<=j)
{
if(x[i]>x[j])
{
c=x[i]; x[i]=x[j]; x[j]=c;
c=y[i]; y[i]=y[j]; y[j]=c;
c=ii;
ii=-jj;
jj=-c;
}
i+=ii;
j+=jj;
}
k=i;
}
void quick(int li,int ls)
{
if(li<ls)
{
poz(li,ls);
quick(li,k-1);
quick(k+1,ls);
}
}
void rez()
{
int i,a,b;
sol[1]=y[1]; a=x[1]; b=y[1];
l=1;
for(i=2;i<=n;i++)
if(x[i]>=a && y[i]>=b)
{
l++;
sol[l]=y[i];
a=x[i]; b=y[i];
}
}
void afis()
{
int i;
ofstream fout("subsir2.out");
fout<<l<<'\n';
for(i=1;i<=l;i++)
fout<<sol[i]<<" ";
fout.close();
}
int main()
{
cit();
quick(1,n);
rez();
afis();
return 0;
}