Cod sursa(job #1683010)

Utilizator hantoniusStan Antoniu hantonius Data 10 aprilie 2016 13:43:24
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <algorithm>
#include <fstream>
#include <iostream> // sterge
using namespace std;

ifstream fin("secv.in");
ofstream fout("secv.out");

int v[5001], w[5001], n, m, minim=1<<30;

void citire() {
    fin >> n;
    m = n;
    for (int i=1; i<=n; i++) {
        fin >> v[i];
        w[i] = v[i];
    }
}

void ordonare() {
    sort(w, w+m);
    for (int i=1; i<m; i++) {
        if (w[i] == w[i+1]) {
            for (int j=i+1; j<m; j++)
                w[j] = w[j+1];
            m--;
            i--;
        }
    }
}

void rezolvare() {
    int i=1, j, nr, poz1, poz2;
    while (i <= n) {
        nr = 2;
        if (v[i] == w[1]) {
            j = i + 1;
            while (j <= n && nr <= m) {
                if (v[j] == w[nr])
                    nr++;
                j++;
            }
            j--;
            if (nr==m+1 && j-i+1<minim) {
                minim = j - i + 1;
                poz1 = i;
                poz2 = j;
            }
        }
        i++;
    }
    //cout << poz1 << ' ' << poz2 << '\n';
}

int main()
{
    citire();
    ordonare();
    rezolvare();
    if (minim == 1<<30)
        cout << -1;
    else
        cout << minim;
    return 0;
}