Cod sursa(job #761877)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 27 iunie 2012 18:21:45
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
#include <map>
#include <algorithm>
using namespace std;

const int N = 5005;
const int INF = 2000000000;
map <int, int> pus;
int n, sol = INF, v[N], t[N];

int main()
{
    int i, j, k;
    freopen ("secv.in", "r", stdin);
    freopen ("secv.out", "w", stdout);
    scanf("%d", &n);
    for(i = 1; i <= n; ++i) {
        scanf("%d", &v[i]);
        if(!pus[v[i]]) {
            t[++t[0]] = v[i];
            pus[v[i]] = 1;
        }
    }
    if(t[0] == 1) {
        printf("1\n");
        return 0;
    }
    sort(t + 1, t + t[0] + 1);
    for(i = 1; i <= n; ++i) {
        if(v[i] == t[1]) {
            j = 2;
            for(k = i + 1; k <= n; ++k) {
                if(v[k] == t[j] && j == t[0])
                    sol = min(sol, k - i + 1);
                else if(v[k] == t[j])
                    ++j;
            }
        }
    }
    if(sol < INF)
        printf("%d\n", sol);
    else printf("-1\n");
    return 0;
}