제출 #482042

#제출 시각아이디문제언어결과실행 시간메모리
482042RedhoodFootball (info1cup20_football)C++14
50 / 100
42 ms1040 KiB
#include<bits/stdc++.h>
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define fi first
#define se second

using namespace __gnu_pbds;
using namespace std;
using namespace __gnu_cxx;
using namespace std;

typedef long long ll;

vector < map < vector < int > , int > > state;

int rek(vector < int > S , int k){
    if(state[k].find(S)!=state[k].end()){
        return state[k][S];
    }
    ll s=0;
    for(auto &i : S)s+=i;
    if(s==0){
        state[k][S] = 1;
        return 1;
    }

    bool win = 0;
    for(int i = 0; i < sz(S); ++i){
        for(int x = 1; x <= min(k , S[i]); ++x){
            S[i] -= x;
            if(!rek(S,x)){
                win = 1;
                break;
            }
            S[i] += x;
        }
    }
    state[k][S] = win;
    return win;
}
int stupid(vector < int > S, int k){
    if(k == 1){
        long long xr = 0;
        for(auto &i : S)
            xr += i;
        if(xr % 2 == 1)
            return 1;
        return 0;
    }


    state.clear();
    state.resize(k + 1);
    return rek(S , k);
}


signed slv(vector < int > S , int k)
{

    using ll = long long ;


    ll N = 0;
    for(auto &i : S)
        N += i;
    ll cur = 1;

    bool good = 0;
    while(cur <= k){
        if(N % 2 == 1){
            good = 1;
            break;
        }

        N = N >> 1;

        cur <<= 1;
    }
    return good;
    assert(false);
}
signed main(){
    ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t;
    cin >> t;
    while(t--){
        int n , k;
        cin >> n >> k;
        vector < int > S(n);
        for(auto &i : S)
            cin >> i;
        cout << slv(S , k);
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...