제출 #525071

#제출 시각아이디문제언어결과실행 시간메모리
525071dron_rpTable Tennis (info1cup20_tabletennis)C++14
0 / 100
3085 ms5356 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll n, k; vector<ll> a, ans; map<pair<ll, ll>, bool> dp; bool check(ll sum, ll items, ll W, vector<bool>&visited){ if (sum == W/2 && items == n/2){ return true;; } if (dp.count({sum, items})) return dp[{sum, items}]; dp[{sum, items}] = false; } bool good(vector<ll>v){ sort(v.begin(), v.end()); ll sum1 = 0, sum2 = 0; for (int i = 0; i<n/2; i+=2){ sum1 += a[i]+a[n-1-i]; sum2 += a[i+1]+a[n-2-i]; } return sum1 == sum2; } vector<ll> transform(vector<bool>&visited){ vector<ll> v(n); int idx = 0; for (int i = 0; i<n+k; i++){ if (visited[i]){ //cout << i << "\n"; v[idx++] = a[i]; } } return v; } void solve(vector<bool>&visited, int cnt){ if (cnt == k-1){ vector<ll> b = transform(visited); if (good(b)){ ans = b; } return; } for (int i = 0; i<n+k; i++){ if (visited[i]){ visited[i] = false; solve(visited, cnt+1); visited[i] = true; } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> k; a.resize(n+k); for (auto& i : a) cin >> i; vector<ll> v = a; vector<bool> visited(n+k, true); solve(visited, 0); for (auto& i : ans) cout << i << " "; }

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

tabletennis.cpp: In function 'bool check(ll, ll, ll, std::vector<bool>&)':
tabletennis.cpp:16:20: warning: control reaches end of non-void function [-Wreturn-type]
   16 |     dp[{sum, items}] = false;
      |                    ^
#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...