Submission #1145162

#TimeUsernameProblemLanguageResultExecution timeMemory
1145162Robert_juniorTable Tennis (info1cup20_tabletennis)C++20
87 / 100
3077 ms376304 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define all(x) x.begin(), x.end() const int N = 2e5 + 7; int a[N]; unordered_map<int, int>mp; map<int, vector<int>>g; void solve(){ int n, k; cin>>n>>k; vector<int>v; for(int i = 1; i <= n + k; i++){ cin>>a[i]; v.pb(a[i]); g[a[i]].pb(i); mp[a[i]]++; } sort(a + 1, a + n + k + 1); sort(all(v)); v.erase(unique(all(v)), v.end()); for(int i = 1; i <= n + k; i++){ a[i] = upper_bound(all(v), a[i]) - v.begin(); } for(int i = 1; i <= k + 1; i++){ for(int j = n + k; j >= n - 1; j--){ int x = v[a[i] - 1] + v[a[j] - 1]; int cnt = 0; for(auto it : v){ if(it > x) cnt += mp[it]; else{ cnt += max(0, mp[it] - mp[x - it]); if(cnt > k) break; } } if(cnt > k) continue; vector<int>pos; for(int l = 1; l <= v.size(); l++){ if(pos.size() >= n) continue; if(v[a[l] - 1] >= x) continue; int ok = v[a[l] - 1], ok1 = x - v[a[l] - 1]; if(ok == ok1){ if(mp[ok] >= 2){ pos.pb(g[ok].back()); g[ok].pop_back(); pos.pb(g[ok].back()); g[ok].pop_back(); mp[ok] -= 2; } } else{ if(mp[ok] > 0 && mp[ok1] > 0){ pos.pb(g[ok].back()); g[ok].pop_back(); pos.pb(g[ok1].back()); g[ok1].pop_back(); mp[ok]--; mp[ok1]--; } } } sort(all(pos)); for(auto it : pos){ cout<<v[a[it] - 1]<<' '; } return; } } } signed main(){ ios_base :: sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; //cin>>t; while(t--){ solve(); } }
#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...