제출 #934058

#제출 시각아이디문제언어결과실행 시간메모리
934058EJIC_B_KEDAX비스킷 담기 (IOI20_biscuits)C++17
0 / 100
2 ms348 KiB
#include <bits/stdc++.h> using ll = long long; using namespace std; mt19937 mt(time(nullptr)); vector<ll> tmp, origin, dp; ll calc(ll x, int pos) { ll sum = (1ll << pos) * tmp[pos]; int ptr = pos; while (ptr > 0 && sum < (1ll << pos) * x) { sum += (1ll << ptr) * tmp[--ptr]; } if (sum < (1ll << pos) * x) { // cout << "! " << pos << '\n'; return (pos ? dp[pos - 1] : 1); } if (ptr == pos) { // cout << "!! " << pos << '\n'; if (ptr == 0) { return 2; } else { return 2 * dp[pos - 1]; } } tmp[ptr] = (sum - (1ll << pos) * x) / (1ll << ptr); ll res = calc(x, ptr); // cout << pos << ' ' << ptr << ' ' << res << '\n'; tmp[ptr] = origin[ptr]; return res + dp[pos - 1]; } ll count_tastiness(ll x, vector<ll> a) { while (a.size() < 60) { a.push_back(0); } int n = 60; for (int i = 0; i < n; i++) { if (a[i] > x + 1) { a[i + 1] += (a[i] - x) / 2; a[i] -= a[i] - x; } } origin = a; tmp.resize(n); tmp = a; dp.resize(n, 0); for (int i = 0; i < n; i++) { dp[i] = calc(x, i); } return dp[n - 1]; }

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

biscuits.cpp: In function 'll calc(ll, int)':
biscuits.cpp:15:35: warning: operation on 'ptr' may be undefined [-Wsequence-point]
   15 |         sum += (1ll << ptr) * tmp[--ptr];
      |                                   ^~~~~
#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...