Cod sursa(job #1096277)

Utilizator IonMosnoiIon Mosnoi IonMosnoi Data 1 februarie 2014 19:50:01
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#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);
}