Cod sursa(job #1226507)

Utilizator diana97Diana Ghinea diana97 Data 5 septembrie 2014 19:58:42
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

const int NMAX = 5000 + 1;
int n;
int a[NMAX], sorted[NMAX], dif[NMAX];

void citeste() {
    f >> n;
    for (int i = 1; i <= n; i++) f >> a[i], sorted[i] = a[i];
}

void rezolva() {
    int nrdif = 1;
    dif[nrdif] = sorted[1];
    for (int i = 2; i <= n; i++)
        if (sorted[i] != sorted[i - 1]) dif[++nrdif] = sorted[i];
    int lim = n - nrdif + 1, sol = NMAX;
    for (int i = 1; i <= lim; i++) {
        if (a[i] == dif[1]) {
            int j, k = 1;
            for (j = i; j <= n && k <= nrdif; j++)
                if (a[j] == dif[k]) k++;
            if (k - 1 == nrdif && j - i < sol) sol = j - i;
        }
    }
    if (sol == NMAX) g << "-1\n";
    else g << sol << '\n';
}


int main () {
    citeste();
    sort(sorted + 1, sorted + n + 1);
    rezolva();
    return 0;
}