Pagini recente » Cod sursa (job #214565) | Cod sursa (job #1733985) | Cod sursa (job #1733069) | Cod sursa (job #2950498) | Cod sursa (job #3284885)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 5000
int v[MAXN + 1];
int alt[MAXN + 1];
int d[MAXN + 1];
int st[MAXN + 1];
int sortare(int N)
{
int u, p, i, aux;
for (u = N; u > 1; u--)
{
p = 1;
for (i = 2; i <= u; i++)
{
if (alt[p] < alt[i])
{
p = i;
}
}
aux = alt[p];
alt[p] = alt[u];
alt[u] = aux;
}
}
int main()
{
FILE *fin, *fout;
fin = fopen("secv.in", "r");
fout = fopen("secv.out", "w");
int N, i, j, o = 1, maxi, rez = -1;
fscanf(fin, "%d", &N);
for (i = 1; i <= N; i++)
{
fscanf(fin, "%d", &v[i]);
alt[i] = v[i];
}
sortare(N);
i = 1;
while (i < N)
{
if (alt[i] != alt[i + 1])
{
o++;
}
i++;
}
printf("%d", o);
for (i = 1; i <= N; i++)
{
j = i - 1;
maxi = 0;
while (j > 0)
{
if (v[j] < v[i])
{
if (maxi == 0)
{
maxi = j;
}
else if (d[maxi] < d[j])
{
maxi = j;
}
}
j--;
}
if (maxi == 0)
{
st[i] = i;
d[i] = 1;
}
else
{
d[i] = d[maxi] + 1;
st[i] = st[maxi];
}
}
for (i = 1; i <= N; i++)
{
if (d[i] == o)
{
if (rez == -1)
{
rez = i - st[i] + 1;
}
else if (rez > i - st[i] + 1)
{
rez = i - st[i] + 1;
}
}
}
fprintf(fout, "%d", rez);
fclose(fin);
fclose(fout);
return 0;
}