mayoko’s diary

プロコンとかいろいろ。

2014 TCO Algorithm Round 2A SixteenBricks

解法

まず, 明らかにブロックは 高い -> 低い -> 高い -> 低い というような感じでデコボコになっている方が良いです。

ということで, ブロックを低い方から順番に並べると, 低い方 8 つは白, 高い方 8 つは黒, という感じで市松模様になっています。

あとは図を見て察して下さい。
f:id:mayokoex:20151113121247j:plain

class SixteenBricks {
public:
    int maximumSurface(vector <int> h) {
        sort(h.begin(), h.end());
        int ret = 16;
        for (int i = 8; i < 16; i++) ret += h[i]*4;
        for (int i = 0; i < 2; i++) ret -= h[i]*4;
        for (int i = 2; i < 6; i++) ret -= h[i]*2;
        return ret;
    }
};