Pagini recente » Cod sursa (job #2003594) | Cod sursa (job #2004855) | Cod sursa (job #2503458) | Cod sursa (job #1888406) | Cod sursa (job #1586503)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[5005];
int l[5005];
int c[5005];
int ans[5005];
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
int n; scanf("%d", &n);
if(n == 0)
printf("-1");
if(n == 1)
printf("1");
for(int i = 1; i <= n; ++i) {scanf("%d", &v[i]); c[i] = v[i];}
sort(c + 1, c + n + 1);
int nr = 1;
for(int i = 2; i <= n; ++i)
if(c[i] != c[i - 1])
nr++;
l[1] = 1;
int p = 1;
int ok = 0;
for(int i = 2; i <= n; ++i)
{
int maxim = 0, r = 0;
for(int j = i - 1; j >= 1; --j)
{
if(v[j] < v[i] and l[j] > maxim)
{
maxim = l[j];
l[i] = l[j] + 1;
r = j;
}
}
if(r == 0)
l[i] = 1;
else ans[i] = r;
if(l[i] == nr)
{
p = i;
ok = 1;
break;
}
}
if(ok == 0)
{printf("-1"); return 0;}
int sf = p;
while(l[p] != 1)
{
p = ans[p];
}
printf("%d", sf - p + 1);
return 0;
}