Cod sursa(job #2294103)

Utilizator test.phptest test test.php Data 1 decembrie 2018 21:49:04
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;

struct spec {
    int val;
    int pos;

    bool operator< (spec B) {
        if (val == B.val)
            return pos < B.pos;
        else
            return val < B.val;
    }
} v[5000];

int fin[5000];

int main() {
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);

    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        cin >> v[i].val;
        v[i].pos = i;
    }
    sort(v, v + n);

    int ind = 0;
    fin[v[ind].pos] = ++ind;

    for (int i = 1; i < n; i++) {
        if (v[i].val == v[i-1].val)
            fin[v[i].pos] = ind;
        else
            fin[v[i].pos] = ++ind;
    }

    int mini = -1;

    for (int i = 0; i < n; i++) {
        int seek = 2;

        if (fin[i] == 1) {
            //cout << "STARTING AT POS " << i << '\n';
            for (int k = i + 1; k < n; k++) {
                //cout << "SCANNING " << fin[k] << '\n';
                if (fin[k] == seek) {
                    seek++;
                    if (seek == ind + 1) {
                        if (mini == -1 || k - i < mini)
                        mini = k - i + 1;
                    }
                    //cout << "OK. POWER UP TO " << ind << '\n';
                }
            }
        }
    }

    if (ind == 1)
        mini = 1;

    cout << mini;
}