Pagini recente » Infoarena Monthly 2014 - Solutii Runda 1 | Cod sursa (job #2711414) | Cod sursa (job #461818) | Cod sursa (job #354671) | Cod sursa (job #87921)
Cod sursa(job #87921)
#include<fstream.h>
#include<math.h>
#include<stdlib.h>
ifstream f("secv.in");
ofstream g("secv.out");
long a[501];
long v[501];
long cont[501];
long a2[501];
long v1[501];
long n,i,j,p,l,k,c,contor,contor2,ok,aux,dif,ok2,q;
void calc()
{
for(i=1;i<=n;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
aux=cont[i];
cont[i]=cont[j];
cont[j]=aux;
}
i=1;
while(a[i]==a[i+1])
{
contor++;
i++;
}
j=n;
while(a[j]==a[j-1])
{
contor2++;
j--;
}
contor++;
contor2++;
dif=n;
for(i=1;i<=contor;i++)
{
for(j=n;j>=n-contor2;j--)
{
if(abs(cont[i]-cont[j])<dif)
{
ok=0;
for(l=cont[i];l<=cont[j];l++)
{
for(p=1;p<=c;p++)
if(v[p]==a2[l] && v1[p]==0)
{
ok2=0;
for(q=1;q<=p;q++)
if(v1[q]==0)
{
ok2=1;
break;
}
if(ok2==1)
{
ok++;
v1[p]=1;}
}
}
if(ok==c)
dif=abs(cont[i]-cont[j]);
for(p=1;p<=c;p++)
v1[p]=0;
}
}
}
g<<(dif-1);
exit(0);
}
int main()
{
f>>n;
c=1;
for(i=1;i<=n;i++)
{
f>>a[i];
a2[i]=a[i];
ok=0;
for(j=1;j<=c;j++)
if(v[j]==a[i])
{
ok=1;
break;
}
if(ok==0)
{
v[c]=a[i];
c++;
}
cont[i]=i;
}
calc();
g<<-1;
f.close();
g.close();
return 0;
}