Pagini recente » Cod sursa (job #1765526) | Cod sursa (job #1361206) | Cod sursa (job #2034651) | Cod sursa (job #1642079) | Cod sursa (job #1998814)
#include<cstdio>
using namespace std;
const int mod1=666013;
const int mod2=637729;
const int nmax=5005;
int v[nmax];
bool key1[666020],key2[637735];
struct al
{
int x,start;
}d[nmax];
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n,i,j,cnt=0;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&v[i]);
if(key1[v[i]%mod1]==0||key2[v[i]%mod2]==0)
key1[v[i]%mod1]=key2[v[i]%mod2]=1,++cnt;
}
int lngmax=5005;
for(i=1;i<=n;++i)
{
d[i].start=i;
d[i].x=1;
for(j=i-1;j;--j)
{
if(v[j]<v[i]&&(d[i].x<d[j].x+1||(d[i].x==d[j].x+1&&d[i].start<d[j].start)))
d[i].x=d[j].x+1,d[i].start=d[j].start;
}
if(d[i].x==cnt&&lngmax>i-d[i].start+1)
lngmax=i-d[i].start+1;
}
if(lngmax==5005)
printf("-1");
else
printf("%d",lngmax);
}