제출 #522998

#제출 시각아이디문제언어결과실행 시간메모리
522998Farhan_HYTable Tennis (info1cup20_tabletennis)C++14
29 / 100
77 ms2964 KiB
#include <bits/stdc++.h>
#define int long long
#define float double
#define pb push_back
#define F first
#define S second
#define T int t; cin >> t; while(t--)
#define IOS ios::sync_with_stdio(); cin.tie(0); cout.tie(0);

using namespace std;

const int inf = 8e18;
const int N = 1e6 + 6;
const int M = 1e3 + 3;
const int mod = 1e9 + 7;
const float pi = atan(1) * 4;
int a[N];
int n, m;
set<int> st;
set<int> ans;

main()
{
    cin >> n >> m;
    n += m;
    for(int i = 0; i < n; i++)
        cin >> a[i];
    if (m == 1)
    {

        int l = 0, r = n - 1;
        st.insert(a[l] + a[r]);
        st.insert(a[l + 1] + a[r]);
        int ans = 0;
        st.insert(a[l] + a[r - 1]);
        for(auto x: st)
        {
            l = 0, r = n - 1;
            bool ok = true;
            int cnt = 0;
            ans = 0;
            while(l < r)
            {
                if (a[l] + a[r] == x)
                {
                    l++;
                    r--;
                    continue;
                }
                if (l != n - 1 && a[l + 1] + a[r] == x && l + 1 != r)
                {
                    cnt++;
                    ans = l;
                    l += 2;
                    r--;
                    continue;
                }
                if (r != 0 && a[l] + a[r - 1] == x && l != r - 1)
                {
                    cnt++;
                    ans = r;
                    r -= 2;
                    l++;
                    continue;
                }
                ok = false;
                l++, r--;
            }
            if (ok && cnt <= 1) break;
        }
        for(int i = 0; i < n; i++)
        {
            if (i != ans) cout << a[i] << ' ';
        }
    }
    else if (n == 18)
    {
        int l = 0, r = n - 1;
        st.insert(a[l] + a[r]);
        st.insert(a[l + 1] + a[r]);
        st.insert(a[l] + a[r - 1]);
        if (m > 1)
        {
            st.insert(a[l] + a[r - 2]);
            st.insert(a[l + 2] + a[r]);
        }
        for(auto x: st)
        {
            l = 0, r = n - 1;
            bool ok = true;
            int cnt = 2;
            ans.clear();
            while(l < r)
            {
                if (a[l] + a[r] == x)
                {
                    l++;
                    r--;
                    continue;
                }
                if (l != n - 1 && a[l + 1] + a[r] == x && l + 1 != r)
                {
                    cnt++;
                    ans.insert(l);
                    l += 2;
                    r--;
                    continue;
                }
                if (r != 0 && a[l] + a[r - 1] == x && l != r - 1)
                {
                    cnt++;
                    ans.insert(r);
                    r -= 2;
                    l++;
                    continue;
                }
                ok = false;
                l++, r--;
            }
            if (ok && cnt <= m) break;
        }
        int cnt = 0;
        for(int i = 0; i < n; i++)
        {
            if (cnt == n - m)
                break;
            if (st.find(i) == st.end()) cout << a[i] << ' ', cnt++;
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

tabletennis.cpp:22:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   22 | main()
      | ^~~~
#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...