Submission #835008

# Submission time Handle Problem Language Result Execution time Memory
835008 2023-08-23T05:30:28 Z alex_2008 Table Tennis (info1cup20_tabletennis) C++14
100 / 100
518 ms 5692 KB
#include <iostream>
#include <algorithm>
#include <vector>
#define int long long
using namespace std;
const int N = 15e4 + 410;
int a[N];
signed main()
{
    srand(time(0));
    int n, k;
    cin >> n >> k;
    for (int i = 1; i <= n + k; i++) {
        cin >> a[i];
    }
    sort(a + 1, a + n + k + 1);
    if (n * k * k <= 240000000) {
        for (int i = 1; i <= k + 1; i++) {
            for (int j = n + k; j >= i + n - 1; j--) {
                int sm = a[i] + a[j], cnt = 0;
                int k1 = i, k2 = j;
                while (k1 < k2) {
                    if (a[k1] + a[k2] == sm) {
                        cnt++;
                        k1++;
                        k2--;
                    }
                    else if (a[k1] + a[k2] > sm) {
                        k2--;
                    }
                    else k1++;
                }
                if (cnt >= (n / 2)) {
                    k1 = i; k2 = j;
                    vector <int> v;
                    while (k1 < k2) {
                        if (a[k1] + a[k2] == sm) {
                            if (v.size() != n) {
                                v.push_back(a[k1]);
                                v.push_back(a[k2]);
                            }
                            cnt++;
                            k1++;
                            k2--;
                        }
                        else if (a[k1] + a[k2] > sm) {
                            k2--;
                        }
                        else k1++;
                    }
                    sort(v.begin(), v.end());
                    for (auto it : v) {
                        cout << it << " ";
                    }
                    cout << "\n";
                    return 0;
                }
            }
        }
    }
    else {
        while (1) {
            int i = rand() % (n / 2) + 1;
            for (int j = min(n + k, n + 2 * k + 1 - i); j >= (n + 1 - i); j--) {
                int sm = a[i] + a[j];
                int k1 = 1, k2 = n + k, cnt = 0;
                while (k1 < k2) {
                    if (a[k1] + a[k2] == sm) {
                        cnt++;
                        k1++;
                        k2--;
                    }
                    else if (a[k1] + a[k2] > sm) {
                        k2--;
                    }
                    else k1++;
                }
                if (cnt >= (n / 2)) {
                    k1 = 1; k2 = n + k;
                    vector <int> v;
                    while (k1 < k2) {
                        if (a[k1] + a[k2] == sm) {
                            if (v.size() != n) {
                                v.push_back(a[k1]);
                                v.push_back(a[k2]);
                            }
                            cnt++;
                            k1++;
                            k2--;
                        }
                        else if (a[k1] + a[k2] > sm) {
                            k2--;
                        }
                        else k1++;
                    }
                    sort(v.begin(), v.end());
                    for (auto it : v) {
                        cout << it << " ";
                    }
                    cout << "\n";
                    return 0;
                }
            }
        }
    }
}

Compilation message

tabletennis.cpp: In function 'int main()':
tabletennis.cpp:38:42: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   38 |                             if (v.size() != n) {
      |                                 ~~~~~~~~~^~~~
tabletennis.cpp:83:42: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   83 |                             if (v.size() != n) {
      |                                 ~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 340 KB Output is correct
2 Correct 1 ms 320 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 980 KB Output is correct
2 Correct 64 ms 4524 KB Output is correct
3 Correct 60 ms 4348 KB Output is correct
4 Correct 59 ms 4412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 61 ms 4472 KB Output is correct
2 Correct 61 ms 4412 KB Output is correct
3 Correct 63 ms 4428 KB Output is correct
4 Correct 59 ms 4464 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 304 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 304 KB Output is correct
2 Correct 2 ms 340 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 2 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 175 ms 4480 KB Output is correct
3 Correct 69 ms 4360 KB Output is correct
4 Correct 83 ms 4440 KB Output is correct
5 Correct 60 ms 4404 KB Output is correct
6 Correct 72 ms 4456 KB Output is correct
7 Correct 80 ms 4484 KB Output is correct
8 Correct 61 ms 4380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 212 KB Output is correct
2 Correct 63 ms 5340 KB Output is correct
3 Correct 518 ms 5572 KB Output is correct
4 Correct 160 ms 5692 KB Output is correct
5 Correct 139 ms 5556 KB Output is correct
6 Correct 59 ms 5684 KB Output is correct
7 Correct 147 ms 5588 KB Output is correct
8 Correct 153 ms 5604 KB Output is correct