Submission #1315582

#TimeUsernameProblemLanguageResultExecution timeMemory
1315582nikoloz-chTable Tennis (info1cup20_tabletennis)C++20
9 / 100
3094 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;
bool dn = false; int n; vector<int> a;
void rec(int chk, int cnt, set<int> st){
    if(dn) return;
    if(cnt == n){
        for(auto &i : st) cout << a[i] << " ";
        cout << endl; dn = true;
        return;
    }
    for(int i = 0; i < a.size(); i++){
        if(st.find(i) != st.end()) continue;
        for(int j = 0; j < a.size(); j++){
            if(st.find(j) != st.end() or i == j or chk != a[i]+a[j]) continue;
            auto s = st;
            s.insert(i); s.insert(j);
            rec(chk,cnt+2,s);
        }
    }
}

inline void solve(){
    int k; cin >> n >> k; a.resize(n+k);
    for(auto &i : a) cin >> i;
    if(n <= 100 and k <= 100){
        for(int i = 0; i < a.size(); i++){
            for(int j = 0; j < a.size(); j++){
                if(i == j) continue;
                set<int> st; st.insert(i);st.insert(j);
                rec(a[i]+a[j],2,st);
            }
        }
        return;
    }
    if(k == 1){
        map<int,set<int>> mp; set<int> st1;
        for(int i = 3; i < n+k; i++){
            mp[a[0]+a[i]].insert(a[i]);
            mp[a[1]+a[i]].insert(a[i]);
            mp[a[2]+a[i]].insert(a[i]);
            st1.insert(a[0]+a[i]);
        }
        vector<int> ans;
        for(auto &i : st1){
            if(mp[i].size() >= 2){
                ans.push_back(i);
            }
        }
        int p = accumulate(a.begin(),a.end(),0LL);
        int MX = -1;
        for(auto &t : ans){
            int pos = -1;
            for(int i = 0; i < n+k; i++){
                if(p-a[i] == t*n/2){
                    pos = i;
                    break;
                }
            }
            MX = max(MX,pos);
            if(pos == -1) continue;
            for(int i = 0; i < n+k; i++){
                if(pos == i) continue;
                cout << a[i] << " ";
            }
            cout << endl;
            break;
        }
        if(MX == -1){
            for(int i = 0; i < 1e18; i++){
                cout << "hi lol";
            }
        }
        return;
    }
    cout << 67;
}

signed main(){
    cin.tie(0)->sync_with_stdio(0);
    int _ = 1;// cin >> _; cout.tie(0);
    while(_--) 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...