Cod sursa(job #271013)

Utilizator irene_mFMI Irina Iancu irene_m Data 4 martie 2009 19:57:17
Problema Subsir 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#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;
}