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系列のどれかわかりにくくていまいち。