제출 #1145110

#제출 시각아이디문제언어결과실행 시간메모리
1145110AgageldiTable Tennis (info1cup20_tabletennis)C++20
0 / 100
3095 ms18452 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define N 6000005
#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>

ll T, n, t, k, sum, b[N], c[N];
pair <int,int> a[N];
vector <int> v;
void find(int x,int cnt) {
	if(cnt > sz(v) / 2) return;
	if(cnt == sz(v)/2) {
		ll p = 0;
		for(int i = 1; i <= sz(v); i++){
			if(c[i]) p += a[v[i - 1]].ff;
		}
		if(p == sum / 2) {
			for(auto i : v) {
				cout << a[i].ss<<" ";
			}
			exit(0);
		}
		return;
	}
	if(x == sz(v) + 1) return;
	c[x] = 1;
	find(x+1,cnt+1);
	c[x] = 0;
	find(x+1,cnt);
}

void solve(int x,int cnt) {
	if(cnt > n) return;
	if(cnt == n) {
		sum = 0;
		v.clear();
		for(int i = 1; i <= n + k; i++) {
			if(b[i]) {
				v.pb(i);
				sum += a[i].ff;
			}
		}
		find(1,0);
		for(int i = 1; i <= n + k; i++) {
			c[i] = 0;
		}
		return;
	}
	if(x == n + k + 1) return;
	b[x] = 1;
	solve(x+1,cnt + 1);
	b[x] = 0;
	solve(x+1,cnt);
}
int main () {
	ios::sync_with_stdio(0);cin.tie(0);
	cin >> n >> k;
	for(int i = 1; i <= n + k; i++) {
		cin >> a[i].ff;
		a[i].ss = i;
	}
	solve(1,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...