Pagini recente » Cod sursa (job #2752901) | Cod sursa (job #2177048) | Cod sursa (job #3262215) | Cod sursa (job #652055) | Cod sursa (job #1455656)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[5001];
int el[5001];
int pr[5001];
int main()
{
FILE *fin=fopen("secv.in", "r");
FILE *fout=fopen("secv.out", "w");
int n, x, p, k=0, mi=2000000000, ap=0, g;
fscanf(fin, "%d", &n);
for(int i=1; i<=n; i++){
fscanf(fin, "%d", &v[i]);
if(v[i]<mi){
mi=v[i];
ap=1;
pr[ap]=i;
}
else if(v[i]==mi)
pr[++ap]=i;
if(v[i]>el[k])
el[++k]=v[i];
else{
p=1;
while(el[p]<v[i])
p++;
if(el[p]!=v[i]){
k++;
for(int j=k; j>p; j--)
el[j]=el[j-1];
el[p]=v[i];
}
}
}
if(k==n){
x=1;
for(int i=1; i<n; i++)
if(v[i]>v[i+1])
x=0;
if(x==1)
fprintf(fout, "%d", n);
else fprintf(fout, "-1");
}
else if(k==1){
fprintf(fout, "1");
}
else{
g=0;
while(g==0 && ap>0){
if(n-pr[ap]+1>=k){
mi=1;
x=pr[ap];
while(mi<=k && x<=n){
if(v[x]==el[mi])
mi++;
x++;
}
if(mi>k)
g=n-pr[ap]+1;
}
ap--;
}
if(g!=0)
fprintf(fout, "%d", g);
else fprintf(fout, "-1");
}
return 0;
}