Submission #354994

#TimeUsernameProblemLanguageResultExecution timeMemory
354994valerikkTable Tennis (info1cup20_tabletennis)C++11
49 / 100
40 ms5524 KiB
#include<bits/stdc++.h>
using namespace std;
 
#define ll long long
 
mt19937 gen(chrono::high_resolution_clock::now().time_since_epoch().count());
 
int n, k, a[150407];
 
void go(int sum) {
    vector<int> used(n + k, 0);
    int id = n + k - 1;
    vector<int> l, r;
    for (int i = 0; i < n + k; ++i) {
	if (used[i]) continue;
	if (l.size() + r.size() == n) break;
	while (id != i && (used[id] || a[id] + a[i] > sum)) --id;
	if (id != i && a[id] + a[i] == sum) {
	    used[id] = used[i] = 1;
	    l.push_back(a[i]);
	    r.push_back(a[id]);
	}
    }
    if (l.size() + r.size() == n) {
	reverse(r.begin(), r.end());
	for (auto x : l) cout << x << " ";
	for (auto x : r) cout << x << " ";
	exit(0);
    }
}
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> k;
    for (int i = 0; i < n + k; ++i) cin >> a[i];
    sort(a, a + n + k);
    set<int> st;
    for (;;) {
	int id = gen() % (n + k);
	int rev = n + k - id - 1;
	vector<int> p;
	for (int i = max(0, rev - k); i <= min(n + k - 1, rev + k); ++i) p.push_back(i);
	shuffle(p.begin(), p.end(), gen);
	for (auto q : p) {
	    if (!st.count(a[id] + a[q])) go(a[id] + a[q]);
	}
    }
    return 0;
}

Compilation message (stderr)

tabletennis.cpp: In function 'void go(int)':
tabletennis.cpp:16:26: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   16 |  if (l.size() + r.size() == n) break;
      |      ~~~~~~~~~~~~~~~~~~~~^~~~
tabletennis.cpp:24:29: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   24 |     if (l.size() + r.size() == n) {
      |         ~~~~~~~~~~~~~~~~~~~~^~~~
#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...