kmjp's blog

競技プログラミング参加記です

April Fools Day Contest 2014 : A. The Great Game、B. Mysterious Language、C. Magnum Opus

April Fools Dayコンテストに今年も参加。
何とか6/9問解けてほどほどの順位に。喜んでいいのか悪いのかわからんが…。
http://codeforces.com/contest/409/problem/A
http://codeforces.com/contest/409/problem/B
http://codeforces.com/contest/409/problem/C

A. The Great Game

同じ長さの文字列が2つ与えられる。勝者はどちらか。

文字列は2文字ずつグー"()"チョキ"8<"パー"[]"に対応するので、じゃんけんの勝利回数を比較すればよい。
8<でハサミに気が付くかがポイント。
自分はsubmit順が2番目でした。

string A,B;

void solve() {
	int f,i,j,k,l,x,y;
	
	cin>>A>>B;
	x=y=0;
	FOR(i,A.size()/2) {
		if(A[i*2]=='8' && B[i*2]=='[') x++;
		if(B[i*2]=='8' && A[i*2]=='[') y++;
		if(A[i*2]=='[' && B[i*2]=='(') x++;
		if(B[i*2]=='[' && A[i*2]=='(') y++;
		if(A[i*2]=='(' && B[i*2]=='8') x++;
		if(B[i*2]=='(' && A[i*2]=='8') y++;
	}
	
	if(x>y) _P("TEAM 1 WINS\n");
	if(x<y) _P("TEAM 2 WINS\n");
	if(x==y) _P("TIE\n");
}

B. Mysterious Language

謎の言語が指定される。
custom testを使って言語を特定し、言語名を出力せよ。

先頭に空白がないとダメな点や、エラーメッセージのライブラリ名libf95.aからFortran系列であることがわかる。
最初f95の文字からFortran 95かと思ったが、先頭にプログラム名がないのでFORTRAN 77が答え。

      print '(A)', "FORTRAN 77"
      end program

C. Magnum Opus

ラテン語何やら謎の問題文が指定される。
入力値に対し出力値を示せ。

適当に翻訳すると、あるものを作るのに5種類の材料がそれぞれ1,1,2,7,4個要ることがわかる。
入力として5つの材料数が与えられるので、作れる数を求めればよい。

void solve() {
	int f,i,j,k,l,x,y;
	int a[5];
	cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4];
	f=10000;
	f=min(f,a[0]/1);
	f=min(f,a[1]/1);
	f=min(f,a[2]/2);
	f=min(f,a[3]/7);
	f=min(f,a[4]/4);
	cout << f << endl;
}

まとめ

この中で面白かったのはAだけだな。
BはFortran系列のどれかわかりにくくていまいち。