Pagini recente » Cod sursa (job #2778671) | Cod sursa (job #2814183) | Cod sursa (job #2466694) | Cod sursa (job #1248988) | Cod sursa (job #1096277)
#include <stdio.h>
#include<algorithm>
const int nmax = 5300;
using namespace std;
int a[nmax],n,maxime[nmax],drum[nmax];
int pozitia(int k){
if(maxime[k]==1)return k;
return pozitia(drum[k]);
}
main(){
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d ",&n);
for(int i=1;i<=n;i++){
scanf("%d ",&a[i]);
}
maxime[n]=1;drum[n]=-1;
int max = n;
for(int i=n-1;i>0;i--){
maxime[i]=1;drum[i]=-1;
for(int j=i+1;j<=n;j++)
if(a[i]<a[j] && maxime[i]<maxime[j]+1){
maxime[i]=maxime[j]+1;
drum[i]=j;
if(maxime[max]<maxime[i])max=i;
}
}
for(int i=1;i<=n;i++)printf("%d ",maxime[i]);printf("\n");
for(int i=1;i<=n;i++)printf("%d ",drum[i]);printf("\n");
int sf = pozitia(max);
printf("%d",sf-max+1);
}