Submission #1137913

#TimeUsernameProblemLanguageResultExecution timeMemory
1137913_unknown_2010Table Tennis (info1cup20_tabletennis)C++20
87 / 100
3094 ms4292 KiB
#ifndef LOCAL #pragma GCC optimize ("Ofast") #pragma GCC optimize ("unroll-loops") #endif #include <bits/stdc++.h> // #include <ext/pb_ds/assoc_container.hpp> // #include <ext/pb_ds/tree_policy.hpp> using namespace std; // using namespace __gnu_pbds; // template<typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; // template<typename T> using indexed_multiset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>; #define int int64_t // #define vi vector // #define ss second // #define ff first #define TESTCASES // #define all(x) (x).begin(), (x).end() // const int mod = 1E9+7; // const int MAXN=200000; // const int inf=1e18; void solution(){ int n,k; cin >> n >> k; vector<int> a(n+k); for(auto &x:a){ cin >> x; } vector<int> v; for(int i=n+k-1; i>=n-1; i--){ for(int j=0; j<=k; j++){ if(j>=i)break; int l=j,r=i; vector<int> ans; while(l<r){ if(ans.size()==n)break; // if(a[j]==1 && a[i]==5)cout << l << ' ' << r << endl; if(a[l]+a[r]==a[i]+a[j]){ ans.push_back(a[l]); ans.push_back(a[r]); l++,r--; } else if(a[l]+a[r]<a[i]+a[j])l++; else r--; } if(ans.size()==n){ sort(ans.begin(), ans.end()); for(auto x:ans)cout << x << ' '; return; } } } // debug(v); bool d=0; auto calc = [&](int x) -> void { map<int,int> mp; for(auto x:a)mp[x]++; vector<int> ans; for(int i=n+k-1; i>=0; i--){ if(ans.size()==n)break; if(mp[a[i]]==1 && mp[x-a[i]]==1){ ans.push_back(a[i]); ans.push_back(x-a[i]); mp[a[i]]=0; mp[x-a[i]]=0; } } if(ans.size()==n){ sort(ans.begin(),ans.end()); d=1; for(auto x:ans)cout << x << ' '; return; } }; for(auto x:v){ if(d)return; calc(x); } } int32_t main(){ // clock_t tStart = clock(); #ifdef khos freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int q = 1; #ifdef TESTCASES // cin >> q; #endif while(q--) { solution(); cout << '\n'; } // cerr<<fixed<<setprecision(3)<<"\nTime Taken: "<<(double)(clock()- tStart)/CLOCKS_PER_SEC<<endl; }
#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...