Cod sursa(job #2483528)

Utilizator victorv88Veltan Victor victorv88 Data 29 octombrie 2019 21:08:00
Problema Secv Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;

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

unordered_map<int,bool>fr;
unordered_map<int,vector<int>>pozitii;

int n, sir[5005], dp[5005];
vector<int>nou;

void solve()
{
    int marime=nou.size();
    int ind, marime1;
    int poz_init, poz_final, poz_actual;
    poz_init=pozitii[nou[0]][0];
    poz_actual=poz_init;
    for (int i=1; i<marime; ++i)
    {
        marime1=pozitii[nou[i]].size();
        for (ind=0; ind<marime && pozitii[nou[i]][ind]<poz_actual; ++ind);
        if (ind==marime)
        {
            g << -1;
            return ;
        }
        else
        {
            poz_actual=pozitii[nou[i]][ind];
        }
    }
    g << poz_actual-poz_init+1;
}

int main( ) {
    f >> n;
    for (int i=1; i<=n; ++i)
    {
        f >> sir[i];
        if (fr[sir[i]]==false)
        {
            fr[sir[i]]=true;
            nou.push_back(sir[i]);
        }
        pozitii[sir[i]].push_back(i);
    }
    sort(nou.begin(),nou.end());
    solve();
    return 0;
}