Submission #689606

#TimeUsernameProblemLanguageResultExecution timeMemory
689606LucaLucaMTable Tennis (info1cup20_tabletennis)C++17
100 / 100
199 ms3120 KiB
#pragma GCC target ("sse4.2")

#pragma GCC optimize("O1")
#pragma GCC optimize("O2")

#pragma GCC optimize("O3")
#pragma GCC optimize("Os")
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization ("unroll-loops")
#pragma GCC target("avx2")

#include <bits/stdc++.h>

using namespace std;

int a[150401];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

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

    int m = n + k;

    for (int i=1; i<=m; i++)
        cin >> a[i];

    for (int i=1; i<=k+1; i++)
    {
        for (int j=m; m-j+i-1 <= k; j--)
        {
            int sum = a[i] + a[j];
            int l=i, r=j;

            int cnt = 0;

            while (l < r)
            {
                while (l < r && a[l] + a[r] > sum)
                    r--;
                while (l < r && a[l] + a[r] < sum)
                    l++;
                if (a[l] + a[r] != sum)
                {
                    cnt = -1;
                    break;
                }
                cnt++;
                l++;
            }

            if (cnt >= n/2)
            {
                cnt = n / 2;
                vector<int>ans;
                int l=i, r=j;
                while (l < r && cnt--)
                {
                    while (l < r && a[l] + a[r] > sum)
                        r--;
                    while (l < r && a[l] + a[r] < sum)
                        l++;
                    ans.push_back(a[l]);
                    ans.push_back(a[r]);
                    l++, r--;
                }

                for (int i=0; i<n; i+=2)
                    cout << ans[i] << ' ';
                reverse(ans.begin(), ans.end());
                for (int i=int(ans.size()) & 1; i<ans.size(); i+=2)
                    cout << ans[i] << ' ';

                return 0;
            }
        }
    }

    return 0;
}

Compilation message (stderr)

tabletennis.cpp:10: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
   10 | #pragma GCC optimization ("unroll-loops")
      | 
tabletennis.cpp: In function 'int main()':
tabletennis.cpp:76:50: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |                 for (int i=int(ans.size()) & 1; i<ans.size(); i+=2)
      |                                                 ~^~~~~~~~~~~
#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...