Cod sursa(job #629643)

Utilizator maritimCristian Lambru maritim Data 3 noiembrie 2011 16:35:00
Problema Interclasari Scor 100
Compilator cpp Status done
Runda gc_practice Marime 0.96 kb
#include<stdio.h>
#include<ctype.h>
#include<cstdlib>
#include<string>

#define MaxKN 20000100
#define MaxN 1000100

int N,K,A[MaxKN],B[MaxN],C[MaxKN],a,nr,NR,p1,p2,NR2;
char S[MaxKN],S2[100];

int main()
{
	FILE *f = fopen("interclasari.in","r");
	FILE *g = fopen("interclasari.out","w");
	
	fscanf(f,"%d ",&K);
	for(int i=1;i<=K;i++)
	{
		fscanf(f,"%d\n",&N);
		if(N)
		{
		fgets(S,sizeof(S),f);
		a = 0; NR2 = 0; p1 = 1; p2 = 1;
		for(int j=0;S[j];j++)
			if(isdigit(S[j]))
			{
				nr = 0;
				for(;isdigit(S[j]);j++)
					nr = nr*10 + S[j]-'0';
				B[++a] = nr;
			}
		for(int i=1;i<=NR;i++)
			C[i] = A[i];
		for(;p1 <= N && p2 <= NR;)
			if(B[p1] < C[p2])
				A[++NR2] = B[p1++];
			else
				A[++NR2] = C[p2++];
		for(;p1 <= N;p1++)
			A[++NR2] = B[p1];
		for(;p2 <= NR;p2++)
			A[++NR2] = C[p2];
		NR = NR2;
		}
	}
	fprintf(g,"%d\n",NR2);
	for(int i=1;i<=NR2;i++)
		fprintf(g,"%d ",A[i]);
	
	fclose(g);
	fclose(f);
	return 0;
}