Pagini recente » Cod sursa (job #2612939) | Cod sursa (job #2617356) | Cod sursa (job #2352330) | Cod sursa (job #2685088) | Cod sursa (job #994636)
Cod sursa(job #994636)
#include <cstdio>
#include <set>
using namespace std;
int n, v[5001], i, j, k, len, pz[5001], MAX, max_len[5001], pos;
bool sw;
set <int> nr, sol;
int main()
{
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; ++i)
{
scanf("%d", &v[i]);
max_len[i]=1;
nr.insert(v[i]);
}
for(i=1; i<=n-1; ++i)
for(j=i+1; j<=n; ++j)
if(v[j]>v[i] && max_len[i]+1>max_len[j])
{
max_len[j]=max_len[i]+1;
if(max_len[j] > MAX)
MAX=max_len[j], k=1, pz[1]=j;
else if(max_len[j] == MAX)
pz[++k]=j;
}
for(i=pz[k]; k!=0; --k)
{
len=0;
for(j=i; max_len[j]>=1 && MAX; --j)
{
if(max_len[j] == MAX)
--MAX;
++len, sol.insert(v[j]), pos=j;
}
if(sol.size() == nr.size())
{
sw=1;
break;
}
sol.clear();
}
if(sw)
printf("%d\n", len);
else
printf("-1\n");
return 0;
}