답안 #668142

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
668142 2022-12-02T22:33:02 Z definitelynotmee Table Tennis (info1cup20_tabletennis) C++
100 / 100
68 ms 4856 KB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define all(x) x.begin(), x.end()
using ll = long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
template<typename T>
using matrix = vector<vector<T>>;

int main(){
    cin.tie(0)->sync_with_stdio(0);

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

    vector<int> v(n+k);
    for(int i = 0; i < n+k; i++)
        cin >> v[i];

    vector<int> sums;

    int minmid = max(0,(n+k)/2-k/2-3), maxmid = min(n+k-1,(n+k)/2+k/2+3);

    for(int i = minmid; i <= maxmid; i++){
        for(int j = i+1; j <= maxmid; j++)
            sums.push_back(v[i]+v[j]);//, cout << v[i]+v[j] << '\n';
    }

    sort(all(sums));
    sums.erase(unique(all(sums)),sums.end());

    auto findans =[&](int sum){
        int p1 = 0, p2 = n+k-1;
        vector<int> resp;

        while(p1 < p2){
            if(v[p1] + v[p2] > sum){
                p2--;
                continue;
            }
            if(v[p1] + v[p2] < sum){
                p1++;
                continue;
            }
            resp.push_back(v[p1]), resp.push_back(v[p2]);
            p1++, p2--;
        }

        sort(all(resp));
        for(int i = 0; i < n; i++)
            cout << resp[i] << ' ';
        cout << '\n';
    };

    for(int sum : sums){
        int resp = 0;
        int p1 = 0, p2 = n+k-1;
        int fail = k+1;

        while(p1 < p2 && fail){
            if(v[p1] + v[p2] > sum){
                p2--;
                fail--;
                continue;
            }
            if(v[p1] + v[p2] < sum){
                p1++;
                fail--;
                continue;
            }

            p1++, p2--;
            resp++;
        }
        if(resp >= n/2){
            findans(sum);
            return 0;
        }
    }
    //exit(1);

}
# 결과 실행 시간 메모리 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
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 724 KB Output is correct
2 Correct 37 ms 3088 KB Output is correct
3 Correct 32 ms 3016 KB Output is correct
4 Correct 33 ms 3016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 3080 KB Output is correct
2 Correct 37 ms 3100 KB Output is correct
3 Correct 38 ms 3180 KB Output is correct
4 Correct 30 ms 3024 KB Output is correct
# 결과 실행 시간 메모리 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 1 ms 340 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 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 2 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 43 ms 3076 KB Output is correct
3 Correct 31 ms 3012 KB Output is correct
4 Correct 32 ms 3044 KB Output is correct
5 Correct 40 ms 3072 KB Output is correct
6 Correct 31 ms 3012 KB Output is correct
7 Correct 36 ms 3048 KB Output is correct
8 Correct 31 ms 3056 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 984 KB Output is correct
2 Correct 68 ms 3380 KB Output is correct
3 Correct 39 ms 4780 KB Output is correct
4 Correct 47 ms 4848 KB Output is correct
5 Correct 45 ms 4732 KB Output is correct
6 Correct 43 ms 4844 KB Output is correct
7 Correct 45 ms 4856 KB Output is correct
8 Correct 43 ms 4848 KB Output is correct