Cod sursa(job #2442542)

Utilizator marius004scarlat marius marius004 Data 24 iulie 2019 12:22:50
Problema Secv Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <algorithm>

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

const int NMAX = 5'000;
int v[NMAX],n,w[NMAX],dp[NMAX],sol{1 << 30};

int main(){
    
    f >> n;
    
    for(int i = 1;i <= n;i++){
        f >> v[i];
        w[i] = v[i];
    }
    
    std::sort(w + 1,w + n + 1);
    dp[1] = w[1];
    int k{ 1 };
    
    for (int i = 2;i <= n;i++)
        if(w[i] != w[i - 1])
            dp[++k] = w[i];
    
    bool ok{false};
    
    for(int i = 1;i <= n - k + 1;i++){
        int pos{ 1 };
        for(int j = i;j <= n;j++){
            if(v[j] == dp[pos])
                pos++;
            if(pos > k){
                ok = true;
                sol = std::min(sol,j - i + 1);
            }
        }
    }
    
    if(ok)
        g << sol;
    else g << -1;
    
    f.close();
    g.close();
    return 0;
}