Pagini recente » Cod sursa (job #3040521) | Cod sursa (job #637525) | Cod sursa (job #794972) | Cod sursa (job #538577) | Cod sursa (job #2776343)
#include <fstream>
#include <set>
using namespace std;
ifstream cin("secv.in");
ofstream cout("secv.out");
int v[5005], urm[5005], l[5005];
set <int> s;
int main()
{
int n, poz, first, last, i, j;
first = last = -1;
cin >> n;
if (n == 0)
{
cout << -1;
return 0;
}
for (i = 1; i <= n; i++)
{
cin >> v[i];
s.insert(v[i]);
}
urm[n] = 0;
l[n] = 1;
for (i = n - 1; i >= 0; i--)
{
urm[i] = 0;
l[i] = 1;
for (j = i + 1; j <= n; j++)
if (v[i] < v[j])
if (l[i] < l[j] + 1)
{
l[i] = l[j] + 1;
if (!urm[j])
urm[i] = j;
else
urm[i] = urm[j];
}
}
bool ok = 1;
for (i = 1; i <= n; i++)
if (l[i] == s.size())
{
ok = 0;
int st = i, dr = urm[i];
if (first == -1)
{
first = st;
last = dr;
}
else if (last - first > dr - st)
{
first = st;
last = dr;
}
}
if (ok)
{
cout << -1;
return 0;
}
cout << last - first + 1;
}