Submission #1145096

#TimeUsernameProblemLanguageResultExecution timeMemory
1145096tntTable Tennis (info1cup20_tabletennis)C++20
72 / 100
3093 ms5560 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 int 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]; unordered_map <int,int> mp; for(int i = 1; i <= min(n + k, k + 600); i++){ for(int j = n + k; j >= max(1ll,k + n - 600); 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]] = -1000000; } } }
#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...