제출 #1269574

#제출 시각아이디문제언어결과실행 시간메모리
1269574biank비스킷 담기 (IOI20_biscuits)C++20
0 / 100
1096 ms320 KiB
#include "biscuits.h" #include <bits/stdc++.h> using namespace std; #define forsn(i, s, n) for (int i = int(s); i < int(n); i++) #define forn(i, n) forsn(i, 0, n) #define dforsn(i, s, n) for (int i = int(n) - 1; i >= int(s); i--) #define dforn(i, n) dforsn(i, 0, n) #define all(x) begin(x), end(x) #define sz(x) int(x.size()) #define pb push_back #define eb emplace_back using ll = long long; ll solve(vector<ll> &a) { ll sum = 0; forn(i, sz(a)) sum += a[i] << i; return sum + 1; } ll count_tastiness(ll x, vector<ll> a) { if (x == 1) { forn(i, sz(a)) if (a[i] > 2) { ll extra = (a[i] - 1) / 2; a[i] -= 2 * extra; if (i + 1 == sz(a)) a.pb(0LL); a[i + 1] += extra; } ll ret = 1; vector<ll> c; forn(i, sz(a)) { if (c[i] == 0) { ret *= solve(c); c.clear(); } else { c.pb(a[i]); } } ret *= solve(c); return ret; } ll sum = 0; forn(i, sz(a)) sum += a[i] << i; ll ret = 1; for (ll y = 1; y * x <= sum; y++) { vector<ll> c = a; ll need = x; while (need) { ll curr = y; dforn(i, sz(a)) { ll cnt = min(c[i], curr >> i); c[i] -= cnt, curr -= cnt << i; } if (curr == 0) need--; else break; } if (need == 0) ret++; } return ret; }
#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...