Cod sursa(job #2018886)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 6 septembrie 2017 11:57:53
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f("secv.in");
ofstream g("secv.out");

int n, i, j, m, k, minim = 10000;
int a[5005], b[5005], c[5005], d[5005];

int main() {
    f >> n;
    for (i = 1; i <= n; i++)
        f >> a[i], b[i] = a[i];

    sort(b+1, b+n+1);
    for (i = 1; i <= n; i++)
        if (b[i] != b[i-1])
            c[++m] = b[i];

    for (i = 1; i <= n; i++) {
        int st = 1, dr = m, mij;
        while (st <= dr) {
            mij = (st+dr)/2;
            if (a[i] > c[mij])
                st = mij+1;
            else dr = mij-1;
        }
        d[i] = st;
    }

    for (i = 1; i <= n; i++)
        if (d[i] == 1) {
            k = 2;
            j = i+1;
            for (;k != m && j <= n; j++)
                if (d[j] == k)
                    k++;
            if (j-i+1 < minim && k == m) minim = j-i+1;
        }
    if (minim != 10000)
        g << minim;
    else g << -1;
}