Cod sursa(job #2764513)

Utilizator DragosC1Dragos DragosC1 Data 21 iulie 2021 12:28:37
Problema Secv Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n;
int a[5001];
int dist[5001];
int Min;

void read() {
    int i;
    ifstream f("secv.in");
    f >> n;
    for (i = 1; i <= n; i++) {
        f >> a[i];
        dist[i] = a[i];
    }
    f.close();
}

void solve() {
    int i, j, k;
    sort(dist + 1, dist + n + 1);

    int l = 1;
    for (i = 2; i <= n; i++)
        if (dist[i] != dist[i - 1])
            dist[++l] = dist[i];

    Min = 1e9;
    for (i = n; i >= 1; i--)
        if (a[i] == dist[l]) {
            k = l - 1, j = i - 1;
            while (j >= 1 && k >= 1) {
                if (a[j] == dist[k])
                    k--;
                j--;
            }
            if (k == 0) 
                if (i - j < Min)
                    Min = i - j;
        }
}

void output() {
    ofstream g("secv.out");
    g << (Min == 1e9 ? -1 : Min);
    g.close();
}

int main() {
    read();
    solve();
    output();
    return 0;
}