Pagini recente » Rating cont de incercari (Marius_Pop) | Cod sursa (job #384784) | Istoria paginii utilizator/cristinicaaa | Istoria paginii utilizator/moscugeorge | Cod sursa (job #279966)
Cod sursa(job #279966)
#include <stdio.h>
#define NMAX 100000
typedef int sir[NMAX];
int n, i, j, max,x;
sir m, k;
FILE *in, *out;
void citeste ()
{
in = fopen("scmax.in", "r");
fscanf(in, "%d", &n);
for (i=0; i<n; i++)
{
fscanf(in,"%d", &m[i]);
}
fclose(in);
}
void calculeaza ()
{
k[n-1] = 1;
//parcurge sirul incepand de la capat
for (i=n-2; i>=0; i--)
{
//cauta un numar mai mare ca cel actual (cel din m[i])
for (j=i+1; j<n; j++)
{
if ((m[j] > m[i]) && (k[i] < k[j]))
{
k[i] = k[j];
}
}
k[i]++;
if (k[i] > max) max = k[i];
}
}
void sirul ()
{
out = fopen("scmax.out", "w");
fprintf(out, "%d \n", max);
max++;
for (i=0; i<n; i++)
{
if (k[i] == max-1)
{
fprintf(out, "%d ", m[i]);
max--;
}
}
fclose(out);
}
int main ()
{
citeste();
calculeaza();
sirul();
return 0;
}