Submission #1145014

#TimeUsernameProblemLanguageResultExecution timeMemory
1145014tntTable Tennis (info1cup20_tabletennis)C++20
49 / 100
3096 ms1908 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")

#define pb push_back                    
#define ll long long
//#define sort(all(v)) sort(v.begin(),v.end())

int mod = 998244353;
const int N = 2e5 + 10;
const int inf = 1e9;
int fact[200001];
ll binpow(ll a, ll b){
 if(b == 0) return 1;
 else if(b % 2 == 1) return (a * binpow(a, b - 1)) % mod;
 ll p = binpow(a,b / 2);
 return (p * p) % mod;
}
signed main(){
    //freopen("mootube.in", "r", stdin);
    //freopen("mootube.out", "w", stdout);
    int n,k;
    cin >> n >> k;
    int a[n + k + 1];
    for(int i = 1; i <= n + k; i++) cin >> a[i];
    map <int,int> mp;
    for(int i = 1; i <= min(n + k, k + 5000); i++){
        for(int j = n + k; j >= min(n + k,k - 5000); j--){
            if(i == j) continue;
            mp[a[i] + a[j]]++;
            if(mp[a[i] + a[j]] >= 0){
                vector <pair<int,int>> ans;
                int l = i,r = j,sum = a[i] + a[j];
                while(l <= r){
                    if(a[l] + a[r] > sum) r--;
                    else if(a[l] + a[r] < sum) l++;
                    else{
                        ans.pb({a[l],a[r]});
                        l++,r--;
                    }
                }
                if(ans.size() >= n / 2){
                    vector <int> v(n + 1);
                    for(int h = 0; h < n / 2; h++){
                        v[h + 1] = ans[h].first,v[n - h] = ans[h].second;
                    }
                    for(int h = 1; h <= n; h++) cout << v[h] << " ";
                    return 0;
                }
            }
            mp[a[i] + a[j]] = -1e9;
        }
    }
    
}
#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...