Task: | Falling Apart |
Sender: | Antti Röyskö |
Submission time: | 2017-10-24 18:41:01 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.04 s | details |
#2 | ACCEPTED | 0.04 s | details |
#3 | ACCEPTED | 0.04 s | details |
#4 | ACCEPTED | 0.04 s | details |
#5 | ACCEPTED | 0.04 s | details |
#6 | ACCEPTED | 0.04 s | details |
#7 | ACCEPTED | 0.03 s | details |
#8 | ACCEPTED | 0.03 s | details |
#9 | ACCEPTED | 0.04 s | details |
#10 | ACCEPTED | 0.03 s | details |
#11 | ACCEPTED | 0.04 s | details |
#12 | ACCEPTED | 0.03 s | details |
#13 | ACCEPTED | 0.03 s | details |
Code
#include <bits/stdc++.h> using namespace std; int t[1000]; int dp[1<<15]; int n; int f(int x) { if(dp[x] != -1) return dp[x]; int q = __builtin_popcount(x); if(q == n) return 0; int mi = 1e9; int ma = 0; for(int i = 0; i < n; ++i) { int z = 1<<i; if(x&z) continue; int w = f(x|z); mi = min(w, mi); ma = max(w+t[i], ma); } if(q % 2 == 0) { //alice dp[x] = ma; } else { dp[x] = mi; } return dp[x]; } int main() { cin>>n; memset(dp, -1, sizeof dp); int sum = 0; for(int i = 0; i < n; ++i) { cin>>t[i]; sum += t[i]; } f(0); cout<<dp[0]<<' '<<sum-dp[0]<<endl; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
15 100 100 100 100 100 100 100 10... |
correct output |
---|
800 700 |
user output |
---|
800 700 |
Test 2
Verdict: ACCEPTED
input |
---|
15 87 100 99 98 91 97 96 95 94 93... |
correct output |
---|
744 651 |
user output |
---|
744 651 |
Test 3
Verdict: ACCEPTED
input |
---|
1 1 |
correct output |
---|
1 0 |
user output |
---|
1 0 |
Test 4
Verdict: ACCEPTED
input |
---|
6 57 100 4 68 55 76 |
correct output |
---|
223 137 |
user output |
---|
223 137 |
Test 5
Verdict: ACCEPTED
input |
---|
1 70 |
correct output |
---|
70 0 |
user output |
---|
70 0 |
Test 6
Verdict: ACCEPTED
input |
---|
8 19 38 29 7 33 5 7 42 |
correct output |
---|
101 79 |
user output |
---|
101 79 |
Test 7
Verdict: ACCEPTED
input |
---|
5 62 16 21 23 28 |
correct output |
---|
101 49 |
user output |
---|
101 49 |
Test 8
Verdict: ACCEPTED
input |
---|
12 8 48 9 10 16 72 47 75 78 99 90... |
correct output |
---|
334 305 |
user output |
---|
334 305 |
Test 9
Verdict: ACCEPTED
input |
---|
11 100 30 32 91 78 7 17 45 40 24 ... |
correct output |
---|
279 211 |
user output |
---|
279 211 |
Test 10
Verdict: ACCEPTED
input |
---|
11 48 90 74 40 22 58 42 31 88 83 ... |
correct output |
---|
368 304 |
user output |
---|
368 304 |
Test 11
Verdict: ACCEPTED
input |
---|
10 45 8 66 96 5 69 37 65 5 52 |
correct output |
---|
256 192 |
user output |
---|
256 192 |
Test 12
Verdict: ACCEPTED
input |
---|
7 78 13 66 50 94 6 76 |
correct output |
---|
226 157 |
user output |
---|
226 157 |
Test 13
Verdict: ACCEPTED
input |
---|
4 44 8 36 60 |
correct output |
---|
96 52 |
user output |
---|
96 52 |