Pagini recente » Cod sursa (job #2746912) | Cod sursa (job #2034825) | Cod sursa (job #577827) | Cod sursa (job #494583) | Cod sursa (job #1206075)
#include <fstream>
#include <set>
using namespace std;
int a[5001],best[5001],pre[5001];
set<int> S;
inline int Sum(int a,int b){
return (a>b?b:a);
}
int main(){
ifstream f("secv.in");
ofstream g("secv.out");
int n,Sum=5001;
f >> n;
for(int i=1;i<=n;i++){
f >> a[i];
S.insert(a[i]);
}
int N=int(S.size());
bool ok=0;
for(int i=2;i<=n;i++){
for(int j=i-1;j>=1;j--){
if(a[i]>a[j] && best[i]<best[j]+1){
best[i]=best[j]+1;
if(!pre[j]) pre[i]=j;
else pre[i]=pre[j];
}
}
if(best[i]==N-1){
ok=1;
Sum=min(i-pre[i]+1,Sum);
}
}
if(!ok) g << -1 <<"\n";
else g << Sum <<"\n";
}