Pagini recente » Cod sursa (job #2615054) | Istoria paginii runda/problemebarajgimnaziu/clasament | Cod sursa (job #2815515) | Cod sursa (job #1400198) | Cod sursa (job #2591962)
#include <fstream>
#include <algorithm>
#include <set>
#include <limits.h>
using namespace std;
ifstream fin("secv.in");
ofstream fout("secv.out");
const int NMAX = 5003;
int n, a, b[NMAX], c[NMAX], maxi, ind_st;
set<int> nr;
int main()
{
fin >> n;
fill(b + 1, b + n + 1, INT_MAX);
for (int i = 1; i <= n; ++i)
{
fin >> a;
nr.insert(a);
c[i] = lower_bound(b, b + n + 1, a) - b;
if (c[i] >= maxi)
{
maxi = c[i];
ind_st = i;
}
b[c[i]] = a;
}
if (maxi != nr.size())
{
fout << "-1\n";
return 0;
}
int s_min = n + 1, i = ind_st;
while (i)
{
int crt = maxi, j = i;
while (maxi)
{
if (c[i] == maxi)
{
--maxi;
if (maxi == 0)
{
if (j - i + 1 < s_min)
{
s_min = j - i + 1;
}
break;
}
}
--i;
}
--i;
}
fout << s_min << "\n";
return 0;
}