Pagini recente » Cod sursa (job #2647082) | Cod sursa (job #2757639) | Cod sursa (job #2874427) | Cod sursa (job #2932780) | Cod sursa (job #3284354)
#include <bits/stdc++.h>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
map<int, int>mp;
int v[5005];
int main()
{
int n,rasp=5005;
in>>n;
for(int i=1;i<=n;i++){
in>>v[i];
mp[v[i]]=1;
}
int poz=0,maxpoz=0;
for(auto &it:mp){
it.second=++poz;
}
maxpoz=poz;
for(int i=1;i<=n;i++){
v[i]=mp[v[i]];
}
for(int i=1;i<=n;i++){
if(v[i]==1){ //gasim primul element crescator
int limit=INT_MAX;
poz=1; //luam fiecare numar crescator incepand cu 1
for(int j=i;j<=n;j++){
if(v[j]==poz) //daca este urmatorul nr crescator
poz++;
if(poz==maxpoz+1){ //daca am ajuns la ultimul element din sirul crescator
limit=j-i+1;
break;
}
}
rasp=min(rasp,limit); //verificam daca este cel mai scurt subsir
}
}
if(rasp==5005)
out<<-1;
else
out<<rasp;
return 0;
}