Cod sursa(job #300084)

Utilizator andrei_vs2009Cozma Andrei andrei_vs2009 Data 7 aprilie 2009 11:18:53
Problema Secv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
    #include<fstream>  
	
    using namespace std;  
   int N,a[50001],b[50001],viz[1500001],l,poz[50001],p;  
   
  void ReadData()  
  {  
      int i;  
      ifstream fin ("secv.in");  
      fin>>N;  
      for (i=1;i<=N;i++)  
          {fin>>a[i];  
           viz[a[i]]++;  
           if (viz[a[i]]==1) b[++l]=a[i];  
          }  
      fin.close();  
  }  
  void Sortare()  
  {  
      int i,j,aux;  
      for (i=1;i<=l-1;i++)  
          for (j=i+1;j<=l;j++)  
              if (b[i]>b[j])  
              {  
                  aux=b[i];  
                  b[i]=b[j];  
                  b[j]=aux;  
              }  
  }  
  void Solve()  
  {  
      int i,j,nr,q,min;  
      for (i=1;i<=N;i++)  
          if (a[i]==b[1])  
              poz[++p]=i;  
      min=32000;  
      for (i=1;i<=p;i++)  
      {   q=1;  
          for (j=poz[i];(j<=N)&&(q!=l+1);j++)  
              if (a[j]==b[q]) q++;  
          if (q==l+1) {  
                          nr=j-poz[i];  
                          if (min>nr) min=nr;  
                      }  
      }  
      ofstream fout("secv.out");  
      if (min!=32000)
	  fout<<min<<"\n";
		else fout<<-1<<"\n";
      fout.close();  
  }  
    
    
  int main ()  
  {  
      ReadData();  
      Sortare();  
      Solve();  
      return 0;
  }