Pagini recente » Cod sursa (job #2795015) | Cod sursa (job #2602390) | Cod sursa (job #411803) | Cod sursa (job #1333710) | Cod sursa (job #1089490)
#include<fstream>
#include<algorithm>
#include<map>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int main(){
int i,n,j,a[5005]={},b[5005]={},c[5005]={},d[5005],m=0,pos=0,x=0,y=0,mm=6000;
map<int,int>t;
f>>n;
for(i=1; i<=n; ++i){
f>>a[i];
t[a[i]]++;
}
int val=t.size();
for(i=n; i>=1; --i){
b[i]=m+1;
j=b[i]-1;
while (j>0 && a[d[j]]<=a[i])
{
--j;
}
b[i]=j+1;
d[b[i]]=i;
c[i]=c[d[j]]; if (c[i]==0) c[i]=i;
if(b[i]>m || (b[i]==m && (c[i]-i) <= mm )){
m=b[i];
mm=c[i]-i;
}
}
if(m==val){
/*
for(i=1; i<=n; ++i){
g<<b[i]<<" ";
}
*/
g<<mm+1;
}
else
g<<"-1";
return 0;
}