Cod sursa(job #75702)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 4 august 2007 23:24:44
Problema Subsir 2 Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
# include <stdio.h>

const long int MAXN=5000;
long int len,n,v[MAXN+1];
struct {long int inf,pos;} set[MAXN+1];

void citire()
{
FILE *f=fopen("subsir2.in","r");
fscanf(f,"%ld",&n);
long int i;
for (i=1;i<=n;i++) fscanf(f,"%ld",&v[i]);
fclose(f);
}

void calculeaza()
{
long int i;
for (i=2;i<=n;i++)
	{
	while (len&&set[len].inf>v[i]) len--;
	len++;
	set[len].inf=v[i];
	set[len].pos=i;
	}
}

void scrie()
{
long int i;
FILE *g=fopen("subsir2.out","w");
fprintf(g,"%ld\n",len);
for (i=1;i<=len-1;i++)
	fprintf(g,"%ld ",set[i].pos);
fprintf(g,"%ld\n",set[len].pos);
fcloseall();
}

int main()
{
citire();
len=1;
set[1].inf=v[1];
set[1].pos=1;
calculeaza();
scrie();
return 0;
}