Cod sursa(job #2518178)

Utilizator marius004scarlat marius marius004 Data 5 ianuarie 2020 11:41:57
Problema Secv Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <set>

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

typedef unsigned long long ull;
typedef long long ll;
typedef const int ci;
typedef std::pair<int,int>pi;

int gcd(int a,int b){
    return (b == 0 ? a : gcd(b,a % b));
}

int n,sol{ 1 << 30 };
std::vector<int>v,w,dp;

int main(){
    
    f >> n;
    
    v.resize(n);
    w.resize(n);
    
    for(int i = 0;i < n;++i){
        f >> v[i];
        w[i] = v[i];
    }
    
    std::sort(w.begin(),w.end());
    
    dp.emplace_back(w[0]);
    
    for(int i = 1;i < n;++i)
        if(w[i] != w[i - 1])
            dp.emplace_back(w[i]);
    
    int k = (int)dp.size();
    for(int i = 0;i < n - k + 1;++i){
        
        int pos{ 0 };
        
        for(int j = i;j < n;++j){
            
            if(v[j] == dp[pos])
                pos++;
            
            if(pos >= k){
                
                if(j - i + 1 <= sol)
                    sol = j - i + 1;
            }
        }
    }
    
    g << (sol == 1 << 30 ? -1 : sol);
    
    return 0;
}