Pagini recente » Cod sursa (job #1086109) | Cod sursa (job #734103) | Cod sursa (job #1824256) | Cod sursa (job #1094758) | Cod sursa (job #1816483)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f, *g;
struct numere
{
int lx, en;
};
numere l[5001];
int n, v[5001], mn = 9999, cnt, dif[5001];
void readFile()
{
f = fopen("secv.in", "r");
fscanf(f, "%d", &n);
int i, j;
bool ok;
for(i = 1; i <= n; i ++)
{
fscanf(f, "%d", &v[i]);
dif[i] = v[i];
}
fclose(f);
}
void solve()
{
int i, j, last;
sort(dif + 1, dif + n + 1);
last = dif[1];
cnt = 1;
for(i = 2; i <= n; i ++)
if(last != dif[i])
last = dif[i], cnt ++;
l[n].lx = 1;
l[n].en = n;
for(i = n - 1; i >= 1; i --)
{
l[i].lx = 1;
l[i].en = i;
for(j = i + 1; j <= n; j ++)
{
if(v[i] < v[j])
{
if(l[i].lx < l[j].lx + 1)
{
l[i].lx = l[j].lx + 1;
l[i].en = l[j].en;
}
}
}
}
for(i = 1; i <= n; i ++)
{
if(l[i].lx == cnt)
{
if(l[i].en - i + 1 < mn)
mn = l[i].en - i + 1;
}
}
}
void printFile()
{
g = fopen("secv.out", "w");
if(mn == 9999)
mn = -1;
fprintf(g, "%d\n", mn);
fclose(g);
}
int main()
{
readFile();
solve();
printFile();
return 0;
}