Cod sursa(job #2765400)

Utilizator DordeDorde Matei Dorde Data 26 iulie 2021 18:25:49
Problema Secv Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int const N = 5001;
int v [N] , v2 [N] , v3 [N];
vector <int> E;
int bsearch (int n , int x){
    int pas = (1 << 12) , r = 0;
    while (pas){
        if (pas + r <= n && v [v2 [pas + r]] < x)
            r += pas;
        pas >>= 1;
    }
    return 1 + r;
}
int main()
{
    freopen ("secv.in" , "r" , stdin);
    freopen ("secv.out" , "w" , stdout);
    int n , ans = (1 << 30);
    scanf ("%d" , &n);
    for(int i = 1 ; i <= n ; ++ i){
        scanf ("%d" , &v [i]);
        v2 [i] = v [i];
    }
    sort (v2 + 1 , v2 + 1 + n);
    int k = 1;
    for(int i = 2 ; i <= n ; ++ i)
        if (v2 [i] != v2 [i - 1])
            v2 [++ k] = v2 [i];
    for(int i = n  ; i ; -- i)
        if (v [i] == v2 [k])
            for(int j = k - 1 , o = i - 1 ; j && o ; -- o)
                if (v [o] == v2 [j]){
                    -- j;
                    if (j == 0)
                        ans = min (ans , i - o + 1);
                }
    printf ("%d" , ans);
    return 0;
}