2006予選模擬 問1

情報オリンピック、2006年の予選模擬 問1です。

なんていうか、なんとも形容しがたいどうとでも出来る問題です。
三角形が出来る条件は長辺1本よりも短辺2本の長さの和の方が長ければいいだけですね。
三角形の種類はとりあえず直角三角形と比べる形にしました。
この手の問題はどんな解決方法でもいいので動くプログラムが短時間で書ければいいと思います。

我流回答(C言語)は続きを読むで

#include 

int main(void)
{
	int ei,tyo,dn,a,b,c,buf;
	ei = 0; tyo=0; dn=0;
	for(;;){
		scanf("%d %d %d",&a,&b,&c);
		if(b < c){
			buf = c;
			c = b;
			b = buf;
		}
		if(a < b){
			buf = b;
			b = a;
			a =  buf;
			if(b < c){
				buf = c;
				c = b;
				b = buf;
			}
		}
		if(b+c > a){
			if(a*a == b*b+c*c){
				tyo++;
			}else if(a*a > b*b+c*c){
				dn++;
			}else if(a*a < b*b+c*c){
				ei++;
			}
		}else
			break;
	}
	printf("%d %d %d %d",tyo+dn+ei, tyo , ei , dn);
	return 0;
}