Pagini recente » Cod sursa (job #1387486) | Cod sursa (job #2472513) | Cod sursa (job #1280186) | Cod sursa (job #573748) | Cod sursa (job #1145737)
#include <fstream>
using namespace std;
ifstream fin ("subsir2.in");
ofstream fout ("subsir2.out");
int v[5005],l[5005],d[5005];
int n,i,j,minim,maxim,poz,Min,Max;
int main () {
fin>>n;
for (i=1;i<=n;i++){
fin>>v[i];
if (v[i]>Max)
Max=v[i];
}
for (i=1;i<=n;i++) {
maxim=0;
for (j=1;j<i;j++)
if (v[j]<=v[i] && l[j]>maxim)
maxim=l[j];
l[i]=maxim+1;
}
for (i=n;i>=1;i--) {
maxim=0;
for (j=i+1;j<=n;j++)
if (v[j]>=v[i] && d[j]>maxim)
maxim=d[j];
d[i]=maxim+1;
}
minim =n+1;
for (i=1;i<=n;i++)
if (d[i]==1 && l[i]<minim)
minim=l[i];
fout<<minim<<"\n";
poz=1;
for (i=minim;i>=1;i--) {
Min=Max;
for (j=poz;j<=n;j++) {
if (d[j]==i && v[j]<Min){
Min=v[j];
poz=j+1;
}
}
fout<<poz-1<<" ";
}
fout<<"\n";
return 0;
}