Submission #690778

#TimeUsernameProblemLanguageResultExecution timeMemory
690778MateiKing80Table Tennis (info1cup20_tabletennis)C++14
100 / 100
65 ms6472 KiB
#include <bits/stdc++.h>
#pragma GCC optimize ("O4")
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")

using namespace std;

int n,k,a[150500];
unordered_map<int,bool>ok;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> k;
    for (int i = 1; i <= n + k; i++)
        cin >> a[i];
    sort(a + 1,a + n + k + 1);
    for (int i = 1; i <= k + 1; i++)
    {
        for (int j = n + k; j >= n - 1; j--)
        {
            int sum = a[i] + a[j];
            if(ok[sum])
                break;
            ok[sum]=true;
            int st = i + 1,dr = j - 1;
            vector<int>sol;
            sol.push_back(a[i]);
            sol.push_back(a[j]);
            while (st < dr && sol.size() < n && dr-st+1>=n-sol.size())
            {
                if (a[st] + a[dr] == sum)
                {
                    sol.push_back(a[st]);
                    sol.push_back(a[dr]);
                    st++;
                    dr--;
                }
                else if (a[st] + a[dr] > sum)
                    dr--;
                else
                    st++;
            }
            if (sol.size() == n)
            {
                sort(sol.begin(),sol.end());
                for (int j = 0; j < n; j++)
                    cout << sol[j] << ' ';
                return 0;
            }
        }
    }
    return 0;
}

Compilation message (stderr)

tabletennis.cpp: In function 'int main()':
tabletennis.cpp:32:42: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   32 |             while (st < dr && sol.size() < n && dr-st+1>=n-sol.size())
      |                               ~~~~~~~~~~~^~~
tabletennis.cpp:32:56: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |             while (st < dr && sol.size() < n && dr-st+1>=n-sol.size())
      |                                                 ~~~~~~~^~~~~~~~~~~~~~
tabletennis.cpp:46:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |             if (sol.size() == n)
      |                 ~~~~~~~~~~~^~~~
#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...