# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
577837 | patrikpavic2 | Uplifting Excursion (BOI22_vault) | C++17 | 4 ms | 364 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
const int M = 102;
const int GR = M * M;
const int INF = 0x3f3f3f3f;
int m;
ll L, A[M], kol;
int dp[2 * GR];
int cnt[30];
int main(){
scanf("%d%lld", &m, &L);
for(int i = m;i >= 1;i--){
ll x; scanf("%lld", &x);
// A[i] += x; L += x * i;
}
ll bla; scanf("%lld", &bla);
for(int i = 1;i <= m;i++){
ll x; scanf("%lld", &x);
A[i] += x;
}
ll L2 = 0;
for(int i = 1;i <= m;i++){
ll uz = min(A[i], max(L - GR, 0LL) / i);
ll trb = M / i;
if(A[i] - uz >= trb){
kol += uz; L -= uz * i;
A[i] -= uz;
}
else{
L -= uz * i; kol += A[i] - min(A[i], trb);
L2 += ((ll)min(A[i], trb) - A[i] + uz) * i;
A[i] = min(A[i], trb);
}
A[i] = min((ll)2 * GR / i, A[i]);
}
L += L2;
for(int i = 1;i < 2 * GR;i++)
dp[i] = -INF;
for(int i = 1;i <= m;i++){
for(int j = 0;j < 8;j++)
cnt[j] = 0;
cnt[0] = A[i];
for(int j = 0;j < 8;j++){
if(cnt[j] > 2){
if(cnt[j] % 2){
cnt[j + 1] += (cnt[j] - 1) / 2;
cnt[j] = 1;
}
else{
cnt[j + 1] += (cnt[j] - 2) / 2;
cnt[j] = 2;
}
}
}
for(int j = 0;j < 8;j++){
for(int b = 0;b < cnt[j];b++)
for(int k = 2 * GR - 1;k >= i * (1 << j);k--)
dp[k] = max(dp[k], (1 << j) + dp[k - i * (1 << j)]);
}
}
if(L >= 2 * GR || dp[L] < 0)
printf("impossible\n");
else
printf("%lld\n", kol + dp[L] + bla);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |