Submission #1318232

#TimeUsernameProblemLanguageResultExecution timeMemory
1318232ElayV13Table Tennis (info1cup20_tabletennis)C++17
57 / 100
3094 ms22916 KiB
//g++ -o sol sol.cpp //cd C:\Users\Asus-1\OneDrive\Desktop #include <bits/stdc++.h> using namespace std; #define int long long #define ld long double const int INF = 1e18; const int N = 100001; #define S(a) a.begin() , a.end() #define pb push_back #define READ(l , r , a) for(int i = l;i <= r;i++) cin >> a[i] #define printV(l , r , a) for(int i = l;i <= r;i++) cout << a[i] << ' '; #define pii pair < int , int > #define FOR(i , l , r) for(int i = l;i <= r;i++) int n , k; vector < int > a; bool check(int val){ map < int , int > mp; for(int &i : a) mp[i]++; int cnt = 0; for(int i = 0;i < n + k;i++){ int need = 1; if(a[i] == val - a[i]) ++need; if(mp[a[i]] >= need && mp[val - a[i]] >= need){ ++cnt; --mp[a[i]]; --mp[val - a[i]]; } } return (cnt >= n / 2); } vector < int > get_res(int val){ vector < int > res; map < int , int > mp; for(int &i : a) mp[i]++; int cnt = 0; for(int i = 0;i < n + k;i++){ int need = 1; if(a[i] == val - a[i]) ++need; if(mp[a[i]] >= need && mp[val - a[i]] >= need){ ++cnt; --mp[a[i]]; --mp[val - a[i]]; res.push_back(a[i]); res.push_back(val - a[i]); } if(res.size() == n) break; } return res; } signed main(){ ios_base::sync_with_stdio(); cin.tie(0); cout.tie(0); cin >> n >> k; a.resize(n + k); READ(0 , n + k - 1 , a); sort(S(a)); vector < pii > all; map < int , int > cnt; for(int i = 0;i <= k;i++){ for(int j = n - 1;j < n + k;j++){ cnt[a[i] + a[j]]++; } } for(int i = 0;i <= k;i++){ for(int j = n - 1;j < n + k;j++){ all.push_back({cnt[a[i] + a[j]] , a[i] + a[j]}); } } sort(all.begin() , all.end()); vector < int > pos; for(int i = all.size() - 1;i >= 0;i--) { pos.push_back(all[i].second); if(pos.size() == 500) break; } for(int vl : pos){ bool can = check(vl); vector < int > res; if(can) res = get_res(vl); else continue; sort(S(res)); printV(0 , n - 1 , res); cout << endl; return 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...