Untitled

 avatar
ArySeh
plain_text
2 months ago
2.9 kB
8
Indexable
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define all(v)    v.begin(),v.end()
#define cin(v,n)  for(int i=0;i<n;i++) cin>>v[i];
#define cout(v) for(auto &i : v) cout<<i<<' '; cout<<endl;
#define fast ios::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
vector<pair<int,int>> vp4={{0,1},{1,0},{0,-1},{-1,0}};
vector<pair<int,int>> vp8={{0,1},{1,0},{0,-1},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
const int mod=1000000007;
const int mod1=998244353;
const int N=2e5+10;
const int INF=1e15+10;

map<vector<pair<int,int>>, int> pre;

int recur(vector<pair<int,int>> v){
    int ans=-1;
    for(int i=0; i<v.size(); i++){
        for(int j=i+1; j<v.size(); j++){
            vector<pair<int,int>> temp;

            if(v[i].ff==v[j].ff){
                for(int k=0; k<v.size(); k++){
                    if(k==i){
                        temp.pb(mp(v[i].ff, v[i].ss+v[j].ss));
                    }
                    else if(k!=j) temp.pb(v[k]);
                }
                sort(all(temp));

                if(pre[temp]==0){
                    pre[temp]=recur(temp);
                }
                if(pre[temp]==-1) ans=1;

                for(int i=0; i<temp.size(); i++) cout<<temp[i].ff<<" "<<temp[i].ss<<endl;
                cout<<pre[temp]<<endl<<endl;
            }

            temp.clear();
            
            if(v[i].ss==v[j].ss){
                for(int k=0; k<v.size(); k++){
                    if(k==i){
                        temp.pb(mp(v[i].ff, v[i].ss+v[j].ss));
                    }
                    else if(k!=j) temp.pb(v[k]);
                }
                sort(all(temp));
                if(!pre[temp]){
                    pre[temp]=recur(temp);
                }
                if(pre[temp]==-1) ans=1;

                temp.clear();
                for(int k=0; k<v.size(); k++){
                    if(k==i){
                        temp.pb(mp(v[j].ff, v[i].ss+v[j].ss));
                    }
                    else if(k!=j) temp.pb(v[k]);
                }
                sort(all(temp));
                if(!pre[temp]){
                    pre[temp]=recur(temp);
                }
                if(pre[temp]==-1) ans=1;
            }
        }
    }
    return ans;
}

void solve(){
    int n,m;cin>>n>>m; // n: colors, m: count of each color
    vector<pair<int,int>> stacks;
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            stacks.pb(mp(i,1));
        }
    }

    // for(int i=0; i<n*m; i++) cout<<stacks[i].ff<<" "<<stacks[i].ss<<endl;

    if(recur(stacks)==1) cout<<"player1";
    else cout<<"player 2";

}

signed main(){
    fast
    int tc=1;
    // cin>>tc;
    while(tc--) solve();
}
Editor is loading...
Leave a Comment