結果

問題 No.61 リベリオン
ユーザー Ysmr_RyYsmr_Ry
提出日時 2014-11-29 15:00:03
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,232 bytes
コンパイル時間 155 ms
コンパイル使用メモリ 32,560 KB
最終ジャッジ日時 2023-08-03 19:06:08
合計ジャッジ時間 594 ms
ジャッジサーバーID
(参考情報)
judge14 / judge11
このコードへのチャレンジ(β)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:57:33: error: ‘ceil’ was not declared in this scope
    int k = std::max( 2*W*b?(int)ceil((Hx-xs-2*W*c*alpha)/(2.0*W*b)):0, 2*H*a?(int)ceil((Hy-ys+2.0*H*c*beta)/(2.0*H*a)):0 );
                                 ^~~~

ソースコード

diff #

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define rep(i,a) for(int i=0;i<(a);++i)

int gcd( int a, int b )
{ return b?gcd(b,a%b):a; }

int extgcd( int a, int b, int &x, int &y )
{
	int d = a;

	if( b )
	{
		d = extgcd( b, a%b, y, x );
		y -= a/b*x;
	}
	else
		x = 1, y = 0;

	return d;
}

int main()
{
	int Q;
	scanf( "%d", &Q );
	while( Q-- )
	{
		int W, H, D, Mx, My, Hx, Hy, Vx, Vy;
		scanf( "%d%d%d%d%d%d%d%d%d", &W, &H, &D, &Mx, &My, &Hx, &Hy, &Vx, &Vy );
		
		while( Vx < 0 || Vy < 0 )
		{
			int t;
			std::swap(W,H);
			t=Mx, Mx=-My, My=t;
			t=Hx, Hx=-Hy, Hy=t;
			t=Vx, Vx=-Vy, Vy=t;
		}

		bool fl = false;
		
		rep( i, 4 )
		{
			int xs = i&1?Mx+2*(W-Mx):Mx, ys = i>=2?My+2*(H-My):My;
			int a = 2*W*Vy, b = 2*H*Vx, c = Vx*(ys-Hy)-Vy*(xs-Hx);
			int g = gcd(a,b);

			if( c % g )
				continue;

			a /= g, b /= g; c /= g;
			int alpha, beta;
			extgcd( a, b, alpha, beta );

			int k = std::max( 2*W*b?(int)ceil((Hx-xs-2*W*c*alpha)/(2.0*W*b)):0, 2*H*a?(int)ceil((Hy-ys+2.0*H*c*beta)/(2.0*H*a)):0 );
			if( (Vx?(xs+2*W*(b*k+c*alpha))/Vx:(ys+2*H*(a*k-c*beta))/Vy) <= D )
			{ fl = true; break; }
		}

		puts( fl?"Hit":"Miss" );
	}

	return 0;
}
0