Pagini recente » Cod sursa (job #1311263) | Cod sursa (job #2069030) | Cod sursa (job #1167880) | Cod sursa (job #2076512) | Cod sursa (job #279834)
Cod sursa(job #279834)
#include <stdio.h>
#define NMAX 100000
typedef int sir[NMAX];
int n, i, j, max;
sir m, k;
void citeste ()
{
FILE * in = fopen("sir.in", "r");
fscanf(in, "%d", &n);
for (i=0; i<n; i++)
{
fscanf(in,"%d", &m[i]);
}
fclose(in);
}
void afiseaza (sir x)
{
printf("\n");
for (i=0; i<n; i++)
{
printf("%3d", x[i]);
}
}
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++)
{
//cand gaseste un nr mai mare se opreste
if (m[j] > m[i])
{
max = k[j] + 1;
k[i] = max;
break;
}
}
//verifica daca a gasit un numar mai mare
if (k[i] == 0)
{
k[i] = 1;
}
}
}
void sirul ()
{
printf("%d \n", max);
max++;
for (i=0; i<n; i++)
{
if (k[i] < max)
{
printf("%d ", m[i]);
max--;
}
}
}
int main ()
{
citeste();
calculeaza();
sirul();
return 0;
}