Pagini recente » Cod sursa (job #2023516) | Cod sursa (job #707418) | Cod sursa (job #1683501) | Cod sursa (job #1479805) | Cod sursa (job #946502)
Cod sursa(job #946502)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int n,a[5005],nb[5005],k,minimum=5005,poz[5005],len,aux[5005];
void read()
{
int i;
f>>n;
for(i=0;i<n;i++)
{
f>>a[i];
aux[i]=a[i];
}
sort(aux,aux+n);
i=1;
nb[0]=aux[0];
k=1;
while(i<n)
{
if(aux[i]!=aux[i-1])
nb[k++]=aux[i];
i++;
}
for(i=0;i<n;i++)
if(a[i]==nb[0])
poz[len++]=i;
}
void calculate()
{
/*while(i<n)
{
if(a[i]==searched)
{
searched=nb[j++];
if(j>k)
minimum=i;
}
i++;
}
limit=i;
if(minimum==5005)
{
g<<-1<<"\n";
return;
}
i=1;
limit++;
j=0;
while(i<n)
{
if(a[i-1]==nb[0])
searched=nb[0];
}*/
int i;
for(i=0;i<len;i++)
{
int j=poz[i]+1,ind=1,searched=nb[ind];
bool yes=0;
while(j<n)
{
if(a[j]==searched)
{
ind++;
searched=nb[ind];
if(ind>=k)
{
if(minimum>j-poz[i]+1)
minimum=j-poz[i]+1;
yes=1;
break;
}
}
j++;
}
if(yes==0)
break;
}
if(minimum==5005)
g<<-1<<"\n";
else
g<<minimum<<"\n";
}
int main()
{
read();
calculate();
}