Submission #1161318

#TimeUsernameProblemLanguageResultExecution timeMemory
116131812345678Table Tennis (info1cup20_tabletennis)C++20
0 / 100
111 ms1608 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;

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++)
        {
            int idxl=l, idxr=sz-1-r, idx=idxr, sm=v[idxl]+v[idxr], cnt=0, ck=l+r;
            for (int i=idxl; i<=idxr; i++)
            {
                dp[i]=-1;
                while (idx>idxl&&v[i]+v[idx]>sm) idx--;
                if (v[i]+v[idx]==sm) dp[i]=idx, cnt++;
                else ck++;
            }
            if (cnt>=n&&ck<k)
            {
                cnt=n;
                for (int i=idxl; i<=idxr; 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...