Pagini recente » Cod sursa (job #230761) | Cod sursa (job #34004) | Cod sursa (job #2422112) | Cod sursa (job #1388193) | Cod sursa (job #2224276)
#include <cstdio>
using namespace std;
int long long 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("%lld", &N);
for(i=1; i<=N; i++){
scanf("%lld", &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("%lld%c", ElementCount[0], '\n');
maxpoz=0;
while(LastElement[maxpoz]!=N+1){
printf("%lld ", ElementsList[LastElement[maxpoz]]);
maxpoz=LastElement[maxpoz];
}
return 0;
}