Pagini recente » Cod sursa (job #1541796) | Cod sursa (job #869033) | Cod sursa (job #2380187) | Cod sursa (job #1659871) | Cod sursa (job #405495)
Cod sursa(job #405495)
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[5001], c[5001], pre[5001];
int n;
void cit();
void rez();
void afis();
int main() {
freopen("subsir2.in", "r", stdin);
freopen("subsir2.out", "w", stdout);
cit();
rez();
afis();
return 0;
}
void cit() {
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &a[i]);
}
void rez() {
long i,j,min, minp;
c[n]=1;
pre[n]=-1;
for(i=n-1; i>=1; i--) {
min=2000002;
c[i]=1, pre[i]=-1;
for(j=i+1; j<=n; j++) {
if(a[i]<a[j] && c[i] < c[j]+1 ) {
if(min>a[j]) {
min=a[j], minp=j;
c[i]=c[j]+1, pre[i]=j;
}
}
}
}
}
void afis() {
int i;
int tot=-1,k;
for(i=1; i<=n; i++)
//tot=max(tot,c[i]);
if(tot<c[i])
tot=c[i], k=i;
printf("%d\n",tot);
int inc =k;
while(1) {
printf("%d ", inc);
inc=pre[inc];
if(inc==-1)
break;
}
}