Pagini recente » Cod sursa (job #2077193) | Cod sursa (job #1458433) | Cod sursa (job #582885) | Cod sursa (job #2761343) | Cod sursa (job #539038)
Cod sursa(job #539038)
#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 tmp2[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];
tmp2[i]=a[i];
}
std::sort(tmp,tmp+nr);
for (int i=0; i<nr; i++)
for (int j=0; j<n; j++)
if (tmp[i]==tmp2[j])
a[j]=i;
}
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)
if (i-d[a[i]]+1<min)
min=i-d[a[i]]+1;
}
fprintf(fout, "%d\n",min);
fclose(fin);
fclose(fout);
return 0;
}