Cod sursa(job #25964)

Utilizator xulescuStefu Gabriel xulescu Data 4 martie 2007 16:59:23
Problema Puteri Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream.h>

int n,s;
int v[10000][3];

int cmmdc(int a,int b){
	while(a!=b){
		if(a>b) a-=b;
		else b-=a;
	}
	if(a==1||b==1){ s=1; return 0; }
	else{ s=a; return 1; }
}

int valid(int i,int j){
	int a=v[i][0]+v[j][0];
	int b=v[i][1]+v[j][1];
	int c=v[i][2]+v[j][2];
	//CAZUL 1
	if(a==0&&b!=0&&c!=0){
		if(b!=1&&c!=1){ if(cmmdc(b,c)) return 1; else return 0; }
		else return 0;
	}
	else if(a!=0&&b==0&&c!=0){
		if(a!=1&&c!=1){ if(cmmdc(a,c)) return 1; else return 0; }
		else return 0;
	}
	else if(a!=0&&b!=0&&c==0){
		if(a!=1&&b!=1){ if(cmmdc(a,b)) return 1; else return 0; }
		else return 0;
	}
	else if(a==0&&b==0&&c!=0){
		if(c!=1) return 1;
		else return 0;
	}
	else if(a==0&&b!=0&&c==0){
		if(b!=1) return 1;
		else return 0;
	}
	else if(a!=0&&b==0&&c==0){
		if(a!=1) return 1;
		else return 0;
	}
	else if(a==0&&b==0&&c==0) return 0;
	else if(a!=0&&b!=0&&c!=0){
		if(a!=1&&b!=1&&c!=1){
			/*return ((a==b)&&(b==c)&&(a==c));*/
			cmmdc(a,b);
			if(cmmdc(s,c)) return 1;
			else return 0;
		}
		return 0;
	}

}

int main(){
	int k=0,j,i;
	ifstream f("puteri.in");
	f>>n;
	for(i=0;i<n;i++){ f>>v[i][0]>>v[i][1]>>v[i][2]; }
	f.close();
    ofstream g("puteri.out");
	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
			if(valid(i,j)){ k++;  }

	g<<k;
	g.close();
	return 0;
}