Pagini recente » Cod sursa (job #1958776) | Cod sursa (job #544717) | Cod sursa (job #336690) | Cod sursa (job #1414250) | Cod sursa (job #279830)
Cod sursa(job #279830)
#include <stdio.h>
#define max 100000
typedef int sir[max];
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("\n");
max++;
for (i=0; i<n; i++)
{
if (k[i] < max)
{
printf("%3d", m[i]);
max--;
}
}
}
int main ()
{
clrscr();
citeste();
calculeaza();
afiseaza(m);
afiseaza(k);
sirul();
return 0;
}