Pagini recente » Cod sursa (job #2272894) | Cod sursa (job #2278472) | Cod sursa (job #1578369) | Cod sursa (job #3193615) | Cod sursa (job #1555106)
#include <cstdio>
#include <set>
#define Nmax 5010
using namespace std;
set <int> S;
int v[Nmax],best[Nmax];
int main()
{
int n,i,start,j,prec,sz;
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);
for(i = 0;i<n;i++)
{
scanf("%d",&v[i]);
S.insert(v[i]);
}
sz = S.size();
for(i = n - 2;i>=0;i--)
for(j = i + 1;j<n;j++)
if(v[i] < v[j] && best[j] + 1 > best[i])
{
best[i] = best[j] + 1;
if(v[i] == *S.begin() && best[i] == sz - 1)
{
start = i;
i = -1;
break;
}
}
prec = start;
for(i = start + 1;i < n;i++)
if(v[i] > v[prec] && best[i] == best[prec] - 1)
{
prec = i;
if(best[i] == 0)
break;
}
printf("%d",i - start + 1 > n ? -1 : i - start + 1);
}