Pagini recente » Cod sursa (job #2531133) | Cod sursa (job #1700713) | Cod sursa (job #652495) | Cod sursa (job #2531839) | Cod sursa (job #2000126)
#include <bits/stdc++.h>
using namespace std;
FILE *F = fopen("secv.in", "r"), *G = fopen("secv.out", "w");
int k, u, p, n, w[5001], v[5001], m[5001], maxx, Max, K;
int main()
{
fscanf(F, "%d ", &n);
for(int i = 1; i <= n; ++ i) fscanf(F, "%d ", &v[i]), w[i] = v[i];
sort(w+1, w+n+1); K = 1;
for(int i = 2; i <= n; ++ i) if(w[i] != w[i-1]) K++;
m[1] = 1;
w[1] = 1; Max = 1; p = 1; u = 1;
for(int i = 2; i <= n; ++ i)
{
maxx = -1; k = 0;
for(int j = i-1; j > 0; -- j)
if(m[j] > maxx && v[j] < v[i]) k = j, maxx = m[j];
!k ? w[i] = i : w[i] = w[k];
m[i] = m[k]+1;
if(m[k]+1 > Max) Max = m[k]+1, p = w[i], u = i;
else if(m[k]+1 == Max && u-p+1 > i-w[i]+1) p = w[i], u = i;
}
if(Max != K) fprintf(G, "%d", -1);
else fprintf(G, "%d", u-p+1);
return 0;
}