Cod sursa(job #583917)

Utilizator david95szabo david emanuel david95 Data 23 aprilie 2011 12:29:37
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream> 
#include <algorithm> 
using namespace std; 
ifstream in("secv.in"); 
ofstream out("secv.out"); 
int n,v[50005],rez[5005],maxim=0; 
pair <int, int> aux[50005]; 
void citire(){ 
int i,val=1,aux1,minim; 
in>>n; 
minim=10000000; 
for(i=1;i<=n;i++){ 
in>>aux[i].first; 
aux[i].second=i; 
} 
sort( &aux[1], &aux[n+1]); 
v[aux[1].second]=val; 
aux1=aux[1].first; 
for(i=2;i<=n;i++){ 
if(aux[i].first!=aux1){ 
val++; 
            
v[aux[i].second]=val; 
           
aux1=aux[i].first; 
            
continue; 
      
} 
      
v[aux[i].second]=val; 
  
} 
  
maxim=val; 
  
for(i=1;i<=n;i++){ 
       
if(v[i]==1){ 
            
rez[1]=i; 
            
if(v[i]==val){ 
               
minim=1; 
                
out<<minim; 
                
return; 
          
} 
            
continue; 
        
} 
        
rez[v[i]]=rez[v[i]-1]; 
        
if(v[i]==val){ 
            
if(rez[v[i]]!=0 && i-rez[v[i]]+1<minim){ 
            
minim=i-rez[v[i]]+1; 
            
} 
       
} 
   
} 
    
if(minim==10000000){ 
       
out<<"-1"; 
        
return; 
   
} 
  
out<<minim; 
} 
 
 
int main(){ 
    
citire(); 
   
return 0; 
}