제출 #1161327

#제출 시각아이디문제언어결과실행 시간메모리
116132712345678Table Tennis (info1cup20_tabletennis)C++20
87 / 100
3095 ms4936 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=2e5+5, kx=405;

int n, k, sz, dp[nx];
vector<int> v ,res;
set<int> s;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>k;
    sz=n+k;
    v.resize(sz);
    for (auto &x:v) cin>>x;
    for (int l=0; l<=k; l++) for (int r=0; r+l<=k; r++) s.insert(v[l]+v[sz-1-r]);
    for (auto sm:s)
    {
        int idx=sz-1, cnt=0;
        for (int i=0; i<sz; i++)
        {
            dp[i]=-1;
            while (idx>i&&v[i]+v[idx]>sm) idx--;
            if (idx<=i) break;
            if (v[i]+v[idx]==sm) dp[i]=idx, cnt+=2;

        }
        //cout<<"sm "<<sm<<' '<<cnt<<'\n';
        if (cnt>=n)
        {
            cnt=n;
            for (int i=0; i<sz; i++)
            {
                if (!cnt) continue;
                if (dp[i]!=-1)
                {
                    res.push_back(v[i]);
                    res.push_back(v[dp[i]]);
                    cnt-=2;
                }
            }
            sort(res.begin(), res.end());
            for (auto x:res) cout<<x<<' ';
            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...