Submission #1606901
Source Code Expand
#include <iostream> using namespace std; int b[2][3]; int c[3][2]; int dp[20000]; struct State{ int a[3][3]; int num; }; int encode(int a[3][3]){ int enc = 0; int fac = 1; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ enc += a[i][j] * fac; fac *= 3; } } return enc; } int calc(int a[3][3]){ int ret = 0; for(int i=0; i<2; i++) for(int j=0; j<3; j++) if(a[i][j] == a[i+1][j]) ret += b[i][j]; for(int i=0; i<3; i++) for(int j=0; j<2; j++) if(a[i][j] == a[i][j+1]) ret += c[i][j]; return ret; } int dfs(State &state){ int enc = encode(state.a); if(dp[enc] != -1) return dp[enc]; if(state.num == 9){ dp[enc] = calc(state.a); return dp[enc]; } bool tak = !(state.num % 2); int optscore = tak ? -(1<<20) : 1<<20; for(int i=0; i<3; i++){ for(int j=0; j<3; j++){ if(state.a[i][j] == 0){ state.a[i][j] = (state.num % 2) + 1; state.num++; int score = dfs(state); if(tak) optscore = max(optscore, score); else optscore = min(optscore, score); state.num--; state.a[i][j] = 0; } } } dp[enc] = optscore; return dp[enc]; } int main(){ for(int i=0; i<2; i++) for(int j=0; j<3; j++) cin >> b[i][j]; for(int i=0; i<3; i++) for(int j=0; j<2; j++) cin >> c[i][j]; fill_n(dp, 20000, -1); State state; for(int i=0; i<3; i++) for(int j=0; j<3; j++) state.a[i][j] = 0; state.num = 0; dfs(state); int sm = 0; for(int i=0; i<2; i++) for(int j=0; j<3; j++) sm += b[i][j] + c[j][i]; cout << dp[0] << endl; cout << sm - dp[0] << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - 双子と○×ゲーム |
User | suzume |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2049 Byte |
Status | AC |
Exec Time | 2 ms |
Memory | 384 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 100 / 100 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample-01.txt, sample-02.txt |
All | sample-01.txt, sample-02.txt, 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 | 2 ms | 384 KB |
sample-02.txt | AC | 1 ms | 384 KB |
test-01.txt | AC | 1 ms | 384 KB |
test-02.txt | AC | 1 ms | 384 KB |
test-03.txt | AC | 1 ms | 256 KB |
test-04.txt | AC | 2 ms | 256 KB |
test-05.txt | AC | 1 ms | 384 KB |
test-06.txt | AC | 2 ms | 256 KB |
test-07.txt | AC | 1 ms | 256 KB |
test-08.txt | AC | 1 ms | 384 KB |
test-09.txt | AC | 1 ms | 384 KB |
test-10.txt | AC | 2 ms | 256 KB |
test-11.txt | AC | 1 ms | 256 KB |
test-12.txt | AC | 1 ms | 384 KB |
test-13.txt | AC | 1 ms | 384 KB |
test-14.txt | AC | 1 ms | 384 KB |
test-15.txt | AC | 1 ms | 256 KB |
test-16.txt | AC | 2 ms | 256 KB |
test-17.txt | AC | 1 ms | 256 KB |
test-18.txt | AC | 2 ms | 256 KB |
test-19.txt | AC | 2 ms | 384 KB |
test-20.txt | AC | 1 ms | 256 KB |