Pagini recente » Cod sursa (job #2002250) | Cod sursa (job #686774) | Cod sursa (job #1275025) | Cod sursa (job #772273) | Cod sursa (job #2224280)
#include <cstdio>
using namespace std;
int N, ElementsList[5005], i, j, LastElement[5005], ElementCount[5005], mx, maxpoz, maxim;
int main()
{
freopen("subsir2.in", "r", stdin);
freopen("subsir2.out", "w", stdout);
scanf("%d", &N);
for(i=1; i<=N; i++){
scanf("%d", &ElementsList[i]);
}
ElementsList[0]=-2000000000;
for(i=N; i>=0; --i){
ElementCount[i]=mx=2000000000;
for(j=i+1; j<=N; ++j){
if(ElementsList[i]<=ElementsList[j] && ElementCount[i]>=ElementCount[j] && ElementsList[j]<mx){
LastElement[i]=j;
ElementCount[i]=ElementCount[j]+1;
}
if(ElementsList[i]<=ElementsList[j] && ElementsList[j]<mx)mx=ElementsList[j];
}
if(!LastElement[i]){
LastElement[i]=N+1;
ElementCount[i]=0;
}
}
printf("%d%c", ElementCount[0], '\n');
maxpoz=0;
while(LastElement[maxpoz]!=N+1){
printf("%d ", LastElement[maxpoz]);
maxpoz=LastElement[maxpoz];
}
return 0;
}