제출 #667707

#제출 시각아이디문제언어결과실행 시간메모리
667707definitelynotmeeTable Tennis (info1cup20_tabletennis)C++98
87 / 100
3070 ms4468 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
using matrix = vector<vector<T>>;

int main(){
    cin.tie(0)->sync_with_stdio(0);

    int n, k;
    cin >> n >> k;

    vector<int> v(n+k);
    for(int i = 0; i < n+k; i++)
        cin >> v[i];

    vector<int> sums;

    int minmid = max(0,(n+k)/2-k/2-3), maxmid = min(n+k-1,(n+k)/2+k/2+3);

    for(int i = minmid; i <= maxmid; i++){
        for(int j = i+1; j <= maxmid; j++)
            sums.push_back(v[i]+v[j]);//, cout << v[i]+v[j] << '\n';
    }

    sort(all(sums));
    sums.erase(unique(all(sums)),sums.end());

    auto findans =[&](int sum){
        int p1 = 0, p2 = n+k-1;
        vector<int> resp;

        while(p1 < p2){
            if(v[p1] + v[p2] > sum){
                p2--;
                continue;
            }
            if(v[p1] + v[p2] < sum){
                p1++;
                continue;
            }
            resp.push_back(v[p1]), resp.push_back(v[p2]);
            p1++, p2--;
        }

        sort(all(resp));
        for(int i = 0; i < n; i++)
            cout << resp[i] << ' ';
        cout << '\n';
    };

    for(int sum : sums){
        int resp = 0;
        int p1 = 0, p2 = n+k-1;

        while(p1 < p2){
            if(v[p1] + v[p2] > sum){
                p2--;
                continue;
            }
            if(v[p1] + v[p2] < sum){
                p1++;
                continue;
            }

            p1++, p2--;
            resp++;
        }
        //cout << sum << ' ' << resp << '\n';
        if(resp >= n/2){
            findans(sum);
            return 0;
        }
    }
    //exit(1);

}
#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...