Submission #432754


Source Code Expand

#include <iostream>
#include <cstdio>
#include <cassert>
#include <cstring>
#include <vector>
#include <valarray>
#include <array>
#include <queue>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <complex>
#include <random>

using namespace std;
typedef long long ll;
typedef unsigned long long ull;

struct B {
    int d[3][3];
};

int p1[3][3], p2[3][3];
int sm;

int calc(B b) {
    int re = 0;
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            if (b.d[i][j] == b.d[i+1][j]) {
                re += p1[i][j];
            }
        }
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            if (b.d[i][j] == b.d[i][j+1]) {
                re += p2[i][j];
            }
        }
    }
    return re;
}

int dfs(B b, int c) {
    if (c == 9) {
        return sm-calc(b);
    }
    int res = -10000;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (b.d[i][j] != 0) continue;
            B bb = b;
            if (c % 2 == 0) {
                bb.d[i][j] = 1;
            } else {
                bb.d[i][j] = -1;
            }
            res = max(res, sm-dfs(bb, c+1));
        }
    }
    return res;
}

int main() {
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            cin >> p1[i][j];
            sm += p1[i][j];
        }
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 2; j++) {
            cin >> p2[i][j];
            sm += p2[i][j];
        }
    }
    B b;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            b.d[i][j] = 0;
        }
    }
    int res = dfs(b, 0);
    cout << res << endl << sm-res << endl;
    return 0;
}

Submission Info

Submission Time
Task C - 双子と○×ゲーム
User yosupo
Language C++11 (GCC 4.9.2)
Score 100
Code Size 1891 Byte
Status AC
Exec Time 86 ms
Memory 924 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 2
AC × 22
Set Name Test Cases
Sample sample-01.txt, sample-02.txt
All test-01.txt, test-02.txt, test-03.txt, test-04.txt, test-05.txt, test-06.txt, test-07.txt, test-08.txt, test-09.txt, test-10.txt, test-11.txt, test-12.txt, test-13.txt, test-14.txt, test-15.txt, test-16.txt, test-17.txt, test-18.txt, test-19.txt, test-20.txt, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
sample-01.txt AC 84 ms 800 KB
sample-02.txt AC 82 ms 924 KB
test-01.txt AC 82 ms 804 KB
test-02.txt AC 83 ms 920 KB
test-03.txt AC 82 ms 808 KB
test-04.txt AC 86 ms 764 KB
test-05.txt AC 83 ms 800 KB
test-06.txt AC 83 ms 920 KB
test-07.txt AC 82 ms 800 KB
test-08.txt AC 82 ms 812 KB
test-09.txt AC 84 ms 796 KB
test-10.txt AC 84 ms 796 KB
test-11.txt AC 85 ms 800 KB
test-12.txt AC 84 ms 800 KB
test-13.txt AC 82 ms 804 KB
test-14.txt AC 84 ms 672 KB
test-15.txt AC 84 ms 808 KB
test-16.txt AC 84 ms 812 KB
test-17.txt AC 83 ms 804 KB
test-18.txt AC 82 ms 792 KB
test-19.txt AC 81 ms 796 KB
test-20.txt AC 83 ms 924 KB