Pagini recente » Cod sursa (job #778058) | Istoria paginii utilizator/adelinaheroiu | Cod sursa (job #1265760) | Cod sursa (job #1255295) | Cod sursa (job #2466831)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int n,i,j,sz,marime[5001],v[5001],mn = 2000000005;
map <int,bool> ap,ap_verif;
bool verif()
{
for(map<int,bool>::iterator itr = ap.begin(); itr != ap.end(); ++ itr)
if(ap_verif.find(itr -> first) == ap_verif.end())
return 0;
return 1;
}
int afla_poz(int poz)
{
ap_verif[v[poz]] = 1;
for(i = poz - 1; i >= 1; -- i)
{
ap_verif[v[i]] = 1;
if(v[i] == mn && verif())
return i;
}
}
int main()
{
f >> n;
for(i = 1; i <= n; ++ i)
{
f >> v[i];
ap[v[i]] = 1;
if(v[i] < mn)
mn = v[i];
}
sz = ap.size();
for(i = 1; i <= n; ++ i)
marime[i] = 1;
for(i = 1; i <= n; ++ i)
for(j = 1; j < i; ++ j)
if(v[i] > v[j])
{
marime[i] = max(marime[i], marime[j] + 1);
if(marime[i] == sz)
{
g << i - afla_poz(i) + 1;
return 0;
}
}
g << -1;
}