Submission #677235

# Submission time Handle Problem Language Result Execution time Memory
677235 2023-01-02T15:40:17 Z LucaLucaM Table Tennis (info1cup20_tabletennis) C++17
100 / 100
181 ms 4652 KB
#include <bits/stdc++.h>

using namespace std;

/**
trebuie sa alegem n din n + k numere astfel incat
a[1] + a[n] = a[2] + a[n-1] = ... = a[n/2] + a[n/2+1]
a[1] + a[n] = a[2] + a[n-1]
a[n] - a[n-1] = a[2] - a[1]
a[n-1] - a[n-2] = a[3] - a[2]
...
a[n/2+1] - a[n/2] = a[n] - a[n-1]

n*k + nlogn?
**/

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];

    sort(a+1, a+m+1);

    for (int i=1; i<=k+1; i++) /// O(k)
    {
        /// incercam sa fie a[i] cel mai mic element , a[j] cel mai mare

        for (int j=m; m-j+i-1 <= k; j--) /// O(k*k)
        {
            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--;
                }

                sort(ans.begin(), ans.end());

                for (int x : ans)
                    cout << x << ' ';
                return 0;
            }
        }
    }

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 980 KB Output is correct
2 Correct 41 ms 4652 KB Output is correct
3 Correct 34 ms 4556 KB Output is correct
4 Correct 33 ms 4512 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 34 ms 4424 KB Output is correct
2 Correct 36 ms 4492 KB Output is correct
3 Correct 44 ms 4536 KB Output is correct
4 Correct 37 ms 4452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 328 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 224 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 2 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 35 ms 4548 KB Output is correct
3 Correct 33 ms 4424 KB Output is correct
4 Correct 34 ms 4424 KB Output is correct
5 Correct 36 ms 4472 KB Output is correct
6 Correct 42 ms 4596 KB Output is correct
7 Correct 32 ms 4532 KB Output is correct
8 Correct 34 ms 4540 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 78 ms 4524 KB Output is correct
3 Correct 34 ms 4436 KB Output is correct
4 Correct 48 ms 4460 KB Output is correct
5 Correct 35 ms 4432 KB Output is correct
6 Correct 181 ms 4540 KB Output is correct
7 Correct 44 ms 4488 KB Output is correct
8 Correct 36 ms 4436 KB Output is correct