Cod sursa(job #219807)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 8 noiembrie 2008 12:12:44
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<stdio.h>
#define N 14000
struct p
{
	int e;
};
struct prieten
{
	int a,b,c,d;
};
int n,m; p v[N];
prieten x[N];
int sortare(int i)
{
	int aux[4],s,j;
	aux[0]=x[i].a;
	aux[1]=x[i].b;
	aux[2]=x[i].c;
	aux[3]=x[i].d;
	do
	{
		s=1;
		for ( j=0; j<3; ++j)
			if (aux[j]>aux[j+1])
			{
				int a=aux[j];
				aux[j]=aux[j+1];
				aux[j+1]=a;
				s=0;
			}
	}
	while (!s);
	int nr=0;
	for ( j=0; j<3;++j)
		if (aux[j]!=aux[j+1])
			nr=nr*10+aux[j];
	nr=nr*10+aux[3];
	return nr;
}
void compar(int cnum)
{
	int s=1,i;
	do
	{
		s=1;
		for (i=1; i<cnum; ++i)
			if (v[i].e>v[i+1].e)
			{
				int a=v[i].e;
				v[i].e=v[i+1].e;
				v[i+1].e=a;
				s=0;
			}
	}
	while (!s);
	int num=1;
	for (i=1; i<cnum; ++i)
		if (v[i].e!=v[i+1].e)
			num++;
	printf("%d",num);
}
void citire()
{
	scanf("%d%d",&n,&m);
	int num=0;
	for (int i=1; i<=m*2; ++i)
	{
		scanf("%d",&v[i].e);
		if ((i>3)&&((v[i-3].e==v[i-2].e)||(v[i-2].e==v[i-1].e)||(v[i-1].e==v[i].e)||(v[i-3].e==v[i-1].e)||(v[i-3].e==v[i].e)||v[i-2].e==v[i].e))
		{	
			x[i-3].a=v[i-3].e;
			x[i-3].b=v[i-2].e;
			x[i-3].c=v[i-1].e;
			x[i-3].d=v[i].e;
			num++;
				
		}
	}
	int cnum=num;
	for ( i=1;i<=m*2-3; ++i)
	{
		if (x[i].a)
		{
			v[num--].e=sortare(i);
		}
	}
	compar(cnum);
	
		
}
int main()
{
	freopen("triplete.in","r",stdin);
	freopen("triplete.out","w",stdout);
	citire();
	
}