제출 #1144967

#제출 시각아이디문제언어결과실행 시간메모리
1144967dobri_okeTable Tennis (info1cup20_tabletennis)C++20
29 / 100
16 ms2892 KiB
//#pragma GCC target ("avx2")   
//#pragma GCC optimize ("Ofast")   
#include <bits/stdc++.h>   
using namespace std;  
#define int long long  
#define F first 
#define S second 
#define pb push_back 
const int N = 1e6, NN=26;
const int mod=1e9+7;
//int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); }
//int lcm(int a, int b) { return a / gcd(a, b) * b; }
//int binpow(int a,int b){if(!b)return 1; if(b&1)return a*binpow(a,b-1)%mod; int x=binpow(a,b/2); return x*x%mod;}
signed main(){   
    ios_base::sync_with_stdio(0);   
    cin.tie(0);   
    cout.tie(0);
    int n, k;
    cin >> n >> k;
    int a[n+k+1];
    if(n+k<=18){
        for(int i=0;i<n+k;i++) cin >> a[i];
        for(int mask=0;mask<(1<<(n+k));mask++){
            vector < int > v;
            for(int i=0;i<n+k;i++){
                if(((mask>>i)&1)) v.pb(a[i]);
            }
            if(n!=v.size()) continue;
            bool b=0;
            for(int i=0;i<v.size()/2;i++){
                if(v[i]!=v[v.size()-i-1]) b=1;
            }
            if(b==1){
                for(auto to : v) cout << to << ' ';
                return 0;
            }
        }
    }
    for(int i=1;i<=n+k;i++) cin >> a[i];
    int l=1, r=n+k-1;
    bool b=0;
    int sum=a[l]+a[r];
    while(l<r){
        if(a[l]+a[r]==sum){ 
            l++; 
            r--;
        }
        else{ b=1; break;}
    }
    if(b==0){
        for(int i=1;i<n+k;i++) cout << a[i] << ' ';
        return 0;
    }
    l=2; r=n+k; sum=a[l]+a[r]; b=0;
    while(l<r){
        if(a[l]+a[r]==sum){ l++; r--;}
        else{ b=1; break;}
    }
    if(b==0){
        for(int i=2;i<=n+k;i++) cout << a[i] << ' ';
        return 0;
    }
    l=1; r=n+k; sum=a[l]+a[r]; b=0;
    while(l<r){
        if(a[l]+a[r]==sum){ l++; r--;}
        else{ b=1; break;}
    }
    if(b==0){
        for(int i=1;i<=n+k;i++){
            if((n+k+1)/2==i) continue;
            cout << a[i] << ' ';
        }
        return 0;
    }
    int pos1=0, pos2=0;
    l=1; r=n+k; sum=a[l]+a[r]; b=0;
    while(l<=r){
        if(a[l]+a[r]==sum){ l++; r--;}
        else{
            pos1=l;
            pos2=r;
            break;
        }
    }
    l=pos1; r=pos2-1; 
    while(l<=r){
        if(a[l]+a[r]==sum){l++; r--;}
        else{ b=1; break;}
    }
    if(b==0){
        for(int i=1;i<=n+k;i++){
            if(i==pos2) continue;
            cout << a[i] << ' ';
        }
        return 0;
    }
    for(int i=1;i<=n+k;i++){
        if(i==pos1) continue;
        cout << a[i] << ' ';
    }
}
#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...