Pagini recente » Cod sursa (job #11280) | Cod sursa (job #3225409) | Cod sursa (job #1961777) | Cod sursa (job #2035360) | Cod sursa (job #2483528)
#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;
}