Submission #104567

#TimeUsernameProblemLanguageResultExecution timeMemory
104567YottaByteBali Sculptures (APIO15_sculpture)C++14
0 / 100
493 ms16816 KiB
#include <iostream> using namespace std; #define int long long #define pc __builtin_popcount const int N = 21, inf = 1073741824; int n, a, b, ans = inf, ar[N], dp[1 << 20]; void calc(int mask) { if(pc(mask) + 1 > b || dp[mask] > -1) { return; } if(a <= pc(mask) + 1 && pc(mask) + 1 <= b) { if(dp[mask] == -1) { int sum = 0, temp = 0; for(int i = 0; i < n; i++) { sum += ar[i]; if(mask & (1 << i)) { temp |= sum; sum = 0; } } temp |= sum; dp[mask] = temp; } ans = min(ans, dp[mask]); } if(pc(mask) + 1 == b) { return; } for(int i = 0; i < n; i++) { if(mask >> i & 1); else { calc(1 << i | mask); } } } main() { cin >> n >> a >> b; for(int i = 0; i < (1 << 20); i++) { dp[i] = -1; } for(int i = 0; i < n; i++) { cin >> ar[i]; } calc(0); cout << ans << endl; }

Compilation message (stderr)

sculpture.cpp:44:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
#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...