Pagini recente » Cod sursa (job #2674776) | Cod sursa (job #1996154) | Cod sursa (job #2964181) | Cod sursa (job #879019) | Cod sursa (job #1188130)
#include <cstdio>
#define lim 2000000000
#define nmax 5005
using namespace std;
int v[nmax],d[nmax],t[nmax],n,i,valmin,min,x,j;
FILE *f=fopen("subsir2.in","r");
FILE *g=fopen("subsir2.out","w");
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
d[n]=1;t[n]=0;
for(i=n-1;i>=1;i--)
{
min=valmin=x=lim;
for(j=i+1;j<=n;j++)
{
if(v[j]<min&&v[j]>=v[i])
{
min=v[j];
if(x==d[j]&&v[j]<valmin){valmin=v[j]; t[i]=j;}
if(d[j]<x){valmin=v[j]; x=d[j]; t[i]=j;}
}
}
if(x!=lim) d[i]=x+1;
else {d[i]=1; t[i]=0;}
}
valmin=min=x=lim;
for(i=1;i<=n;i++)
{
if(valmin>v[i])
{
if(d[i]==min&&v[i]<v[x]) x=i;
if(d[i]<min) { min=d[i]; x=i;}
valmin=v[i];
}
}
fprintf(g,"%d\n%d ",min,x);
while(t[x]!=0)
{
fprintf(g,"%d ",t[x]);
x=t[x];
}
fclose(f);
fclose(g);
return 0;
}