Hatena::Grouptopcoder

cafelier@SRM

cafelier のSRM参加記録です。コンテスト中に考えてたことを執拗に全部書き残すとどうなるだろうかという試み本番中にこういうコードが書きたかったなあ、という後で書いた反省コードを書き残す試み

スパムが来たのでしばらくコメント欄をはてなユーザ限定にしています、すみません、

 | 

2012-05-06

GCJ12 Round1B C Small

11:50 | はてなブックマーク - GCJ12 Round1B C Small - cafelier@SRM

Dで。3進数マスクすぐ作れるのはいい感じ。Largeわからなかった。

#!/usr/bin/rdmd
import std.algorithm;
import std.array;
import std.conv;
import std.stdio;
import std.string;
import std.range;

void solve(in long[] S)
{
   const N = S.length;
   for(int m=0; m<3^^N; ++m) {
      auto S1 = iota(N).filter!((i){return m/(3^^i)%3==1;}).map!((i){return S[i];}).array;
      auto S2 = iota(N).filter!((i){return m/(3^^i)%3==2;}).map!((i){return S[i];}).array;
      long S1_sum = reduce!"a+b"(0L, S1);
      long S2_sum = reduce!"a+b"(0L, S2);

      if(S1_sum>0 && S2_sum>0 && S1_sum==S2_sum) {
         writeln(S1.map!(to!string).join(" "));
         writeln(S2.map!(to!string).join(" "));
         return;
      }
   }

   writeln("Impossible");
}

void main()
{
   const T = readln.chomp.to!int;
   foreach(t; 0..T)
   {
      writefln("Case #%d:", t+1);
      solve(readln.split.map!(to!long).array[1..$]);
   }
}
トラックバック - https://topcoder-g-hatena-ne-jp.jag-icpc.org/cafelier/20120506
 | 

presented by cafelier/k.inaba under CC0