Pagini recente » Cod sursa (job #378056) | Cod sursa (job #1905664) | Cod sursa (job #2007660) | Cod sursa (job #1207071) | Cod sursa (job #2040461)
#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; if( m[a[i]]==V.size())
if(c[m[a[i]]]!=-1 )
mini=min(mini,c[m[a[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]]]);
}
if(mini!=50005) fout<<mini;
else fout<<-1;
return 0;
}