Submission #4033853
Source Code Expand
#include <iostream> #include <map> using namespace std; int B[3][3],C[3][3],pow[10] = {1}; map<int,int> dp; int code(int A[][3]){// 盤面に対して一意の整数を返す? int res = 0; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ res += A[i][j]*pow[i*3+j]; } } return res; } bool end(int A[][3]){ for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(A[i][j]==0) return false; } } return true; } int rec(int A[][3],int c){//A == 盤面、0 == NULL, 1 == o, 2 == x, c == 0 == 初手 int num = code(A); // cout << num << endl; int score = 0,score1 = -1e9,score2 = 1e9;//そろっていたほうの得点 if(dp.count(num)) return dp[num]; if(end(A)){ for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ if(A[i][j]==A[i+1][j]) score += 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]) score += C[i][j]; } } return score; } for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(A[i][j]==0){ if(c==0){ A[i][j] = 1; score1 = max(score1,rec(A,1)); A[i][j] = 0; }else{ A[i][j] = 2; score2 = min(score2,rec(A,0)); A[i][j] = 0; } } } } if(c==0){ dp[num] = score1; return score1; } else{ dp[num] = score2; return score2; } } int main(){ int sum = 0; for(int i=0;i<2;i++){ for(int j=0;j<3;j++){ cin >> B[i][j]; sum += B[i][j]; } } for(int i=0;i<3;i++){ for(int j=0;j<2;j++){ cin >> C[i][j]; sum += C[i][j]; } } for(int i=1;i<=9;i++) pow[i] = 3*pow[i-1]; // for(int i=1;i<=9;i++) cout << pow[i] << endl; int A[3][3] = {}; int ans = rec(A,0); cout << ans << endl; cout << sum-ans << endl; }
Submission Info
Submission Time | |
---|---|
Task | C - 双子と○×ゲーム |
User | khei4 |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 1737 Byte |
Status | AC |
Exec Time | 5 ms |
Memory | 512 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 | 5 ms | 512 KB |
sample-02.txt | AC | 5 ms | 512 KB |
test-01.txt | AC | 5 ms | 512 KB |
test-02.txt | AC | 5 ms | 512 KB |
test-03.txt | AC | 5 ms | 512 KB |
test-04.txt | AC | 5 ms | 512 KB |
test-05.txt | AC | 5 ms | 512 KB |
test-06.txt | AC | 5 ms | 512 KB |
test-07.txt | AC | 5 ms | 512 KB |
test-08.txt | AC | 5 ms | 512 KB |
test-09.txt | AC | 5 ms | 512 KB |
test-10.txt | AC | 5 ms | 512 KB |
test-11.txt | AC | 5 ms | 512 KB |
test-12.txt | AC | 5 ms | 512 KB |
test-13.txt | AC | 5 ms | 512 KB |
test-14.txt | AC | 5 ms | 512 KB |
test-15.txt | AC | 5 ms | 512 KB |
test-16.txt | AC | 5 ms | 512 KB |
test-17.txt | AC | 5 ms | 512 KB |
test-18.txt | AC | 5 ms | 512 KB |
test-19.txt | AC | 5 ms | 512 KB |
test-20.txt | AC | 5 ms | 512 KB |