Cod sursa(job #607167)

Utilizator ion824Ion Ureche ion824 Data 10 august 2011 22:55:26
Problema Secv Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
#include<set>

using namespace std;

const short nmax=5005;
int a[nmax];
short b[nmax],l[nmax],n,k;
set<short> generala;


int main(void){
    ifstream fin("secv.in");
    ofstream fout("secv.out");
    short i,j,max,poz,q,min,poz_min;
    fin>>n; min=30000;
    for(i=1;i<=n;++i){ fin>>a[i]; generala.insert(a[i]); if(a[i]<min)min=a[i]; }
    k=generala.size();                  
    b[n]=1; l[n]=0; 
    for(i=1;i<=n;++i)l[i]=i;
    for(i=n-1;i>=1;--i){
                     max=0; q=l[i]; 
                     for(j=i+1;j<=n;++j)
                       if(a[i]<a[j] && max<b[j])   
                            { max=b[j]; q=l[j]; }
                     b[i]=max+1; l[i]=q;                        
                     }  
    poz=0;          
    for(i=n;i>=1;--i)if(b[i]==k && a[i]==min) { poz=i; break; }
    if(n==1)fout<<"1"; 
    else{
    if(poz==0)fout<<"-1";
      else                                
           fout<<l[poz]-poz+1;            
           }   
    fout.close();                     
 return 0;            
  
}