Cod sursa(job #1023844)

Utilizator TzapulPaun Victor Tzapul Data 7 noiembrie 2013 19:58:36
Problema Lista lui Andrei Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <stdio.h>

int n,m;
char x[2000];
int valid(int );
FILE *f=fopen("nrcuv.in","r"),*q=fopen("nrcuv.out","w");

struct nrcuv
	{
		char a,b;
	};
nrcuv l[2000];

int main()
{
	int k,g,i;
	long s=0;
	fscanf(f,"%d%d",&n,&m);
	for(i=1;i<=m;i++)
	{
		fscanf(f,"%c",&l[i].a);
		while(((int)l[i].a==32)||((int)l[i].a==10))
			fscanf(f,"%c",&l[i].a);
		fscanf(f,"%c",&l[i].b);
		while(((int)l[i].b==10)||((int)l[i].b==32))
			fscanf(f,"%c",&l[i].b);
	}
	for(i=1;i<=m;i++)
		printf("%c %c\n",l[i].a,l[i].b);
	k=1;
	x[k]='`';
	while(k>0)
	{
		g=0;
		while((g==0) && (x[k]<'z'))
			{
				x[k]++;
				if(valid(k))
					g=1;
			}
		if(g==1)
			if(k==n)
				s++;
			else
			{
				k++;
				x[k]='`';
			}
		else
			k--;
	}
	fprintf(q,"%ld",s%104159);
	printf("%ld",s%104159);
}

int valid(int k)
{
	int ok=1,i;
	for(i=1;i<=m;i++)
		if(((x[k]==l[i].b)&&(x[k-1]==l[i].a))||(x[k]==l[i].a)&&(x[k-1]==l[i].b))
			ok=0;
	return ok;
}