Cod sursa(job #2158467)

Utilizator RaduNRadu Negovan RaduN Data 10 martie 2018 13:08:59
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int v[5001], u[5001], q[5001];
pair <int, int> aux[5001];
int main() {
    int n;
    f>>n;
    for (int i=0; i<n; i++){
        f>>aux[i].first;
        aux[i].second=i;
    }
    sort (aux, aux+n);
    int nrv=1, nrd=0;
    v[aux[0].second]=nrv;
    for (int i=1; i<n; i++){
        if (aux[i].first!=aux[i-1].first){
            nrv++;
        }
        v[aux[i].second]=nrv;
    }
    int st=0, dr=-1, lmin=n+1;
    for (int i=0; i<=nrv; i++){
        u[i]=-1;
    }
    for (int i=0; i<n; i++){
        q[++dr]=i;
        if (u[v[i]]==-1){
            nrd++;
        }
        u[v[i]]=i;
        while (st!=dr && u[v[q[st]]]!=q[st]){
            st++;
        }
        if (nrd==nrv){
            lmin=min(lmin, i-q[st]+1);
        }
    }
    g<<lmin;
    return 0;
}