Cod sursa(job #1772913)

Utilizator mihai.alphamihai craciun mihai.alpha Data 7 octombrie 2016 11:05:08
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
using namespace std;

int v[5005];
struct nr{
    int x,poz;
}sorted[5005];

bool comp(nr x, nr y){
    return x.x < y.x;
}

int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);
    int i,j,d,n;
    d = 0;
    scanf("%d", &n);
    for(i = 1;i <= n;i++){
        scanf("%d", &sorted[i].x);
        sorted[i].poz = i;
    }
    sort(sorted + 1,sorted + n + 1, comp);
    sorted[0].x = -1;
    for(i = 1;i <= n;i++){
        if(sorted[i].x != sorted[i-1].x){
            d++;
        }
        v[sorted[i].poz] = d;
    }
    int ans = 1e9;
    int ax;
    for(i = d;i <= n;i++){
        if(v[i] == d){
            ax = d;
            for(j = i;j >= 1;j--){
                if(v[j] == ax){
                    ax--;
                }
                if(ax == 0){
                    break;
                }
            }
            if(ax == 0){
                ans = min(ans, i-j+1);
            }
        }
    }
    if(ans == 1e9){
        ans = -1;
    }
    printf("%d",ans);
    return 0;
}