# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1105838 | abushbandit_ | Football (info1cup20_football) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
#ifndef ONLINE_JUDGE
#include "debug.h"
#else
#define debug(...)
#define debugArr(...)
#endif
#define int long long
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define ff first
#define ss second
#define pb push_back
template<class T, class U> inline bool chmin(T& a, const U& b) { if (a > b) { a = b; return true; } return false; }
template<class T, class U> inline bool chmax(T& a, const U& b) { if (a < b) { a = b; return true; } return false; }
const int inf = 2e18;
const int mod = 1e9 + 7;
const int N = 2e5 + 1;
void solve(){
int n,k;
cin >> n >> k;
vector<int> a(n + 1);
int mx = 0;
for(int i = 1;i <= n;i++) cin >> a[i],mx = max(mx,a[i]);
vector<vector<int>> dp(mx + 1,vector<int> (min(mx,k + 1)));
sort(all(a));
set<int> MEX;
for(int i = 1;i <= min(mx,k) + 1;i++) {
MEX.insert(i);
}
int X = 0;
for(int i = 1;i <= mx;i++) {
set<int> v = MEX;
int mex = 0;
for(int j = 1;j <= min(i,k);j++) {
if(v.count(dp[i - j][j]))
v.erase(dp[i - j][j]);
dp[i][j] = *v.begin();
}
mex = *(v.begin());
X = X ^ mex;
}
if(X) cout << 1;
else cout << 0;
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);cout.tie(nullptr);
int T = 1;
cin >> T;
while(T--) {
solve();
}
}