Submission #4658622
Source Code Expand
#include <iostream>
#include <string>
#include <vector>
#include <set>
#include <algorithm>
#include <cctype>
#include <cmath>
#include <queue>
#include <map>
#include <numeric>
#include <unordered_map>
#include <iomanip>
#include <functional>
#include <bitset>
#include <complex>
#define rep(i, n) for(int i = 0; i < (int)(n); i++)
#define repi(i,a,b) for(int i=int(a);i<int(b);i++)
#define all(x) (x).begin(),(x).end()
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
typedef long long ll;
using namespace std;
int flag[3][3];
using P=pair<int,int>;
vector<P>dp(1<<10,{-1,-1});
int va[2][3],vb[3][2];
P calc()
{
int p=0,q=0;
int a=0;
rep(i,3)rep(j,3)a+=(1<<(i*3+j))*flag[i][j];
if(dp[a]!=make_pair(-1,-1))return dp[a];
rep(i,2)rep(j,3)
{
if(flag[i][j]==flag[i+1][j])p+=va[i][j];
else q+=va[i][j];
}
rep(i,3)rep(j,2)
{
if(flag[i][j]==flag[i][j+1])p+=vb[i][j];
else q+=vb[i][j];
}
dp[a]={p,q};
//if(p==15&& q==80)cout<<" YES"<<endl;
//cout<<p<<" "<<q<<endl;
return {p,q};
}
vector<P> rec(int n=1)
{
vector<P> resv;
if(n==10)
{
resv.push_back(calc());
return resv;
}
rep(i,3)rep(j,3)
{
if(flag[i][j]==-1)
{
if(n&1)
{
flag[i][j]=1;
auto t=rec(n+1);
for(auto ti:t)resv.push_back(ti);
flag[i][j]=-1;
}
else
{
flag[i][j]=0;
auto t=rec(n+1);
for(auto ti:t)resv.push_back(ti);
flag[i][j]=-1;
}
}
}
vector<P> ret;
if(n&1)
{
auto maxp=-1;
for(auto ti :resv)
{
if(ti.first>maxp)maxp=ti.first;
}
for(auto ti :resv)
{
if(ti.first==maxp)ret.push_back(ti);
}
}
else
{
auto maxp=-1;
for(auto ti :resv)
{
if(ti.second>maxp)maxp=ti.second;
}
for(auto ti :resv)
{
if(ti.second==maxp)ret.push_back(ti);
}
}
ret.erase(unique(all(ret)),ret.end());
return ret;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
rep(i,3)rep(j,3)flag[i][j]=-1;
rep(i,2)rep(j,3)cin>>va[i][j];
rep(i,3)rep(j,2)cin>>vb[i][j];
auto retv=rec();
for(auto res:retv)
{
cout<<res.first<<endl;
cout<<res.second<<endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 双子と○×ゲーム |
User |
plin |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2446 Byte |
Status |
AC |
Exec Time |
116 ms |
Memory |
256 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 |
102 ms |
256 KB |
sample-02.txt |
AC |
100 ms |
256 KB |
test-01.txt |
AC |
101 ms |
256 KB |
test-02.txt |
AC |
105 ms |
256 KB |
test-03.txt |
AC |
101 ms |
256 KB |
test-04.txt |
AC |
107 ms |
256 KB |
test-05.txt |
AC |
101 ms |
256 KB |
test-06.txt |
AC |
100 ms |
256 KB |
test-07.txt |
AC |
100 ms |
256 KB |
test-08.txt |
AC |
102 ms |
256 KB |
test-09.txt |
AC |
101 ms |
256 KB |
test-10.txt |
AC |
101 ms |
256 KB |
test-11.txt |
AC |
116 ms |
256 KB |
test-12.txt |
AC |
101 ms |
256 KB |
test-13.txt |
AC |
101 ms |
256 KB |
test-14.txt |
AC |
101 ms |
256 KB |
test-15.txt |
AC |
101 ms |
256 KB |
test-16.txt |
AC |
101 ms |
256 KB |
test-17.txt |
AC |
108 ms |
256 KB |
test-18.txt |
AC |
103 ms |
256 KB |
test-19.txt |
AC |
101 ms |
256 KB |
test-20.txt |
AC |
101 ms |
256 KB |