Submission #1144981

#TimeUsernameProblemLanguageResultExecution timeMemory
1144981AgageldiTable Tennis (info1cup20_tabletennis)C++20
0 / 100
3117 ms674228 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define N 600005
#define pb push_back
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define sz(s) (int)s.size()
#define pii pair<int,int>

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

ll T, n, a[N], t, k, sum;
set <int> s;
map <int,int> pos;

int main () {
	ios::sync_with_stdio(0);cin.tie(0);
	cin >> n >> k;
	for(int i = 1; i <= n + k; i++) {
		cin >> a[i];
		if(i <= n) {
			s.insert(i);
			sum += a[i];
		}
	}
	if(sum % 2 == 0) {
		pos[0] = 1;
		for(auto j : s) {
			for(int i = sum/2; i >= 0; i--) {
				if(pos[i]) pos[i + a[j]] = 1;
			}
		}
		if(pos[sum/2]) {
			for(auto j:s) {
				cout << j << " ";
			}
			return 0;
		}
	}
	s.insert(k + n);
	sum += a[k + n];
	for(int i = 1; i <= n; i++) {
		sum -= a[i];
		s.erase(i);
		if(sum % 2) {
			sum += a[i];
			s.insert(i);
			continue;
		}
		pos.clear();
		pos[0] = 1;
		for(auto j : s) {
			for(int l = sum/2; l >= 0; l--) {
				if(pos[l]) pos[l + a[j]] = 1;
			}
		}
		if(pos[sum/2]) {
			for(auto j:s) {
				cout << j << " ";
			}
			return 0;
		}
		sum += a[i];
		s.insert(i);
	}
}
#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...