Submission #1132704

#TimeUsernameProblemLanguageResultExecution timeMemory
1132704sethodTable Tennis (info1cup20_tabletennis)C++20
20 / 100
3095 ms3180 KiB
#include <bits/stdc++.h>
using namespace std;


int main(){
    int n, k;
    cin >> n >> k;
    int arr[n + k];
    for(int i = 0; i < n + k; i++){
        cin >> arr[i];
    }
    int l = 0, r = n + k - 1;
    bool found = 0;
    queue<pair<int, int>> q;
    vector <int> ans;
    q.push({l, r});
    map<pair<int,int>, bool> m;
    while(!q.empty() && !found){
        
        // cerr << found << " ";
        vector<int> tmp;
        int l1 = q.front().first;
        int r1 = q.front().second;
        int l2 = q.front().first;
        int r2 = q.front().second;
        if(m[{l2, r2}]){
            continue;
        }
        int sum = arr[l1] + arr[r1];
        tmp.push_back(arr[l1]);
        tmp.push_back(arr[r1]);
        q.pop();
        l1++;
        r1--;
        // cerr << l2 << " " << r2 << " " << sum << " " << endl;
        while(l1 < r1){
            // cerr << arr[l1] << " " << arr[r1] << " " << sum << endl;
            if(arr[l1] + arr[r1] == sum){
                // cerr << arr[l1] << " " << arr[r1] << " " << sum << endl;
                tmp.push_back(arr[l1]);
                tmp.push_back(arr[r1]);
                l1++;
                r1--;
            }
            else if(arr[l1] + arr[r1] < sum) l1++;
            else r1--;
        }
        // cerr << tmp.size() << endl;
        m[{l2, r2}] = 1;
        if(tmp.size() >= n){
            found = true;
            ans.assign(tmp.begin(), tmp.begin() + n);
        }
        else{
            q.push({l2 + 1, r2});
            q.push({l2, r2 - 1});
        }
        // cerr << endl;
    }
    sort(ans.begin(), ans.end());
    for(int i = 0; i < n; i++){
        cout << ans[i] << " ";
    }
    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...