Pagini recente » Cod sursa (job #2989145) | Cod sursa (job #1082271) | Cod sursa (job #1279667) | Cod sursa (job #2920979) | Cod sursa (job #3284345)
#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=5002;
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
}
}
out<<(rasp==5002)?-1:rasp;
return 0;
}