Cod sursa(job #2040449)

Utilizator Garen456Paun Tudor Garen456 Data 15 octombrie 2017 20:14:23
Problema Secv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
int n,a[5005],c[5005],dr[5005];
vector <int> V;
map <int ,int>m;
int main()
{  fin>>n;
  int i,mini=50005;
  for(i=1;i<=n;++i)
  { fin>>a[i];
      if(m[a[i]]==0)
      V.push_back(a[i]);
      m[a[i]]=1;
  }
   sort(V.begin(),V.end());
   for(i=0;i<V.size();++i)
       m[V[i]]=i+1;

   for(i=1;i<=V.size();++i)
      c[i]=-1;

   for(i=1;i<=n;++i)
    if(m[a[i]]==1)
       {c[1]=1;  dr[1]=i;      //fout<<c[m[a[i]]-1]<<"\n";
       }
    else
    { dr[m[a[i]]]=i;
    //fout<<c[m[a[i]]-1]<<"\n";
        if(c[m[a[i]]-1]!=-1)
             {
                // fout<<i<<" "<<dr[m[a[i]]-1]<<"\n";
             c[m[a[i]]]=c[m[a[i]]-1]+i-dr[ m[a[i]]-1];

          // fout<<a[i]<<" "<<c[m[a[i]]]<<"\n";
             }
        if( m[a[i]]==V.size())
            if(c[m[a[i]]]!=-1 )
           mini=min(mini,c[m[a[i]]]);
    }

    fout<<mini;



    return 0;
}