Pagini recente » Cod sursa (job #2627207) | Cod sursa (job #3166977) | Cod sursa (job #1823362) | Cod sursa (job #824597) | Cod sursa (job #539055)
Cod sursa(job #539055)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
FILE *fin=fopen("secv.in","r");
FILE *fout=fopen("secv.out","w");
int a[5000];
int tmp[5000];
int d[5000];
int nr,n;
#define INF 0x3f3f3f3f
void replace()
{
nr=0;
for (int i=0; i<n; i++)
{
int j;
for (j=0; j<nr; j++)
if (tmp[j]==a[i])
break;
if (j==nr)
tmp[nr++]=a[i];
}
std::sort(tmp,tmp+nr);
for (int i=0; i<n; i++)
for (int j=0; j<nr; j++)
if (a[i]==tmp[j])
{
a[i]=j;
break;
}
}
int main (int argc, char * const argv[]) {
fscanf(fin, "%d",&n);
for (int i=0; i<n; i++)
fscanf(fin, "%d",&a[i]);
replace();
for (int i=0; i<nr; i++)
d[i]=-1;
int min = INF;
for (int i=0; i<n; i++)
{
if (!a[i])
d[0]=i;
else
d[a[i]]=d[a[i]-1];
if ((a[i]==nr-1)&&(d[a[i]]!=-1))
if (i-d[a[i]]+1<min)
min=i-d[a[i]]+1;
}
if (min==INF)
min=-1;
fprintf(fout, "%d\n",min);
fclose(fin);
fclose(fout);
return 0;
}