Pagini recente » Cod sursa (job #2741382) | Cod sursa (job #1756857) | Solutii Summer Challenge 2007, Runda 3 | Cod sursa (job #2709993) | Cod sursa (job #1131015)
#include <fstream>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
ifstream f("secv.in");
ofstream g("secv.out");
int n;
f>>n;
vector<int> a(n);
for (int i=0; i<n; i++)
f>>a[i];
vector<int> b(a);
sort(b.begin(), b.end());
b = vector<int> (b.begin(), unique(b.begin(), b.end()));
int m, min = 5002;
m = b.size();
for (int i=0; i<n; i++)
if (a[i] != b[0])
continue;
else{
bool gasit = true;
int j = 0;
int current = i;
int k;
int contor = 0;
for (k=0; k<m; k++){
j = current;
while (j<n){
if (a[j] == b[k]){
current = j;
break;
}
else
j++;
}
if (j == n && b[k] != a[j])
gasit = false;
}
if (gasit && min > current -i + 1){
min = current -i + 1;
//printf("i:%d j:%d, k:%d current:%d min:%d\n", i,j,k,current,min);
}
}
if (min == 5002)
min = -1;
g << min;
f.close();
g.close();
return 0;
}