Cod sursa(job #3734)

Utilizator peanutzAndrei Homorodean peanutz Data 28 decembrie 2006 12:16:40
Problema Subsir Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <stdio.h>

#define NMAX 1010


int s[NMAX], max[NMAX], nr[NMAX], n;
long lenmax, lennr;


void read()
{
int i;

scanf("%d\n", &n);

for(i = 0; i < n; ++i)
	scanf("%d\n", &s[i]);
}





void find()
{
int i, j;


 for(i = 0; i < n; ++i)
	{
		for(j = i-1, nr[i] = 1, max[i] = 1; j > -1; --j)
			{
				if(  (s[i] > s[j])  &&  (max[i] <= 1+max[j])  )
					{


						if(max[i] < 1+max[j])
							max[i] = 1+max[j], nr[i] = nr[j];


						else if(max[i] == 1+max[j])
							nr[i] += nr[j];




					}
			}
		if(  lenmax < max[i]  )
			lenmax = max[i], lennr = nr[i];
		else if(  lenmax ==  max[i]  )
			lennr += nr[i];
	}
}


void write()
{
int i;

printf("%ld\n", lenmax);
printf("%ld\n", lennr);
}


int main()
{
freopen("subsir.in", "r", stdin);
freopen("subsir.out", "w", stdout);


read();


find();


write();


fclose(stdin);
fclose(stdout);

return 0;
}