Pagini recente » Cod sursa (job #63974) | Cod sursa (job #122124) | Cod sursa (job #604005) | Cod sursa (job #811227) | Cod sursa (job #1734442)
#include <cstdio>
#define MAXN 5000
#define INF 1000000001
using namespace std;
int v[MAXN+2], l[MAXN+2], prev[MAXN+2];
int main()
{
FILE *fin, *fout;
int n, i, j, lmin, pos, minim;
fin=fopen("subsir2.in", "r");
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++)
fscanf(fin, "%d", &v[i]);
fclose(fin);
v[0]=-INF;
for(i=n; i>=0; i--){
minim=lmin=INF;
pos=n+1;
for(j=i+1; j<=n; j++)
if(v[j]>=v[i] && v[j]<minim){
minim=v[j];
if(lmin>=l[j]){
lmin=l[j];
pos=j;
}
}
if(lmin==INF)
lmin=0;
l[i]=lmin+1;
prev[i]=pos;
}
fout=fopen("subsir2.out", "w");
fprintf(fout, "%d\n", l[0]-1);
for(i=1, pos=prev[0]; i<l[0]; i++, pos=prev[pos])
fprintf(fout, "%d ", pos);
fprintf(fout, "\n");
fclose(fout);
return 0;
}