Cod sursa(job #116982)

Utilizator mithyPopovici Adrian mithy Data 20 decembrie 2007 01:52:57
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#define NMax 10005

int n, m, nm;
int a[NMax], b[NMax], c[NMax], lg[NMax];
FILE *f, *g;

void citire();
void inter();
void pd();

int main()
{
	citire();
	inter();
	pd();
	return 0;
}
void pd()
{
	int i, j, lgmax = 0;
	lg[0] = 1;

	for (i=1; i<nm; i++ )
	{
		lg[i] = 1;
		for (j=i-1; j>=0; j--)
		{
			if ( lg[j]+1 > lg[i] && c[i] > c[j] )
				lg[i] = lg[j]+1;
			if ( lg[i] > lgmax )
				lgmax = lg[i];
		}
	}

	fprintf( g, "%d\n", lgmax );
	for (i=0; i<nm; i++)
		fprintf( g, "%d ", c[i] );
}
void inter()
{
	int i, j, k=0;

	i=j=0;
	while ( i < n && j < m )
	{
		if ( a[i] <= b[j] )
			c[k++] = a[i++];
		else
			c[k++] = b[j++];
	}
	while ( i<n )
		c[k++] = a[i++];
	while ( j<m )
		c[k++] = b[j++];
	nm = k;
}
void citire()
{
	int i;
	f = fopen( "interclasare.in", "rt" );
	g = fopen( "interclasare.out", "wt" );
	fscanf( f, "%d", &n );
	for (i=0; i<n; i++)
		fscanf( f, "%d", &a[i] );
	fscanf( f, "%d", &m );
	for (i=0; i<m; i++)
		fscanf( f, "%d", &b[i] );
}