QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#53344 | #2929. Concert Rehearsal | thomas_harmeyer | AC ✓ | 147ms | 18728kb | C++ | 2.4kb | 2022-10-04 23:12:45 | 2022-10-04 23:12:47 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define repo(i, b) for (int i = 0; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<long long, long long> pii;
typedef vector<long long> vi;
ll solve() {
// input
ll n; // num of players
ll p; // day length
ll k; // num of days
cin >> n >> p >> k;
vi a(n); // players
for (auto& i : a) cin >> i;
vi cuma = [&]() -> vi {
vi cum;
cum.push_back(0);
int repeat = 2;
while (repeat--) {
for (ll i : a) {
cum.push_back(cum[sz(cum) - 1] + i);
}
}
return cum;
}();
// [starting] = <where you end up, number of players>
vector<pii> to = [&]() {
vector<pii> to;
ll sum = a[0];
for (ll left = 0; left < n; left++) {
ll lo = 0, diff = (1LL) << 30LL;
while (diff > 0) {
auto check = [&](ll x) {
ll ans = (x / n) * cuma[n];
ans += cuma[left + (x % n)] - cuma[left];
return ans <= p;
};
if (check(lo + diff)) {
lo += diff;
}
diff /= 2;
}
to.emplace_back((left + lo) % n, lo);
sum -= a[left];
}
return to;
}();
pii loop;
// [after i days] = <next index to play, number of students to play total>
vector<pii> cum = [&]() {
vector<pii> cum;
vector<ll> vist(n, -1);
pii cur(0, 0);
cum.push_back(cur);
while (vist[cur.first] == -1) {
vist[cur.first] = cum.size() - 1;
cur.second += to[cur.first].second;
cur.first = to[cur.first].first;
cum.push_back(cur);
}
loop = make_pair(vist[cur.first], cum.size() - 1);
return cum;
}();
auto ans = [&]() {
// no loop
if (k < cum.size() - 1) {
return cum[k].second / n;
}
ll ans = cum[cum.size() - 1].second;
k -= cum.size() - 1;
ll loopVal = cum[loop.second].second - cum[loop.first].second;
ll loopSize = loop.second - loop.first;
ans += loopVal * (k / loopSize);
ans += cum[loop.first + (k % loopSize)].second - cum[loop.first].second;
return ans / n;
}();
return ans;
// <size of loop, num of students in loop>
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
cout << solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3560kb
input:
3 20 10 6 9 5
output:
10
result:
ok single line: '10'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3640kb
input:
5 11 2 5 5 5 5 5
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
7 11 3 1 2 3 4 5 6 7
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3728kb
input:
4 8 9 2 7 2 3
output:
4
result:
ok single line: '4'
Test #5:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
1 3 7 2
output:
7
result:
ok single line: '7'
Test #6:
score: 0
Accepted
time: 2ms
memory: 3560kb
input:
1 1000000000 1000000000 1
output:
1000000000000000000
result:
ok single line: '1000000000000000000'
Test #7:
score: 0
Accepted
time: 0ms
memory: 3564kb
input:
5 999999999 999999999 2 1 4 7 3
output:
58823528941176471
result:
ok single line: '58823528941176471'
Test #8:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
5 5 1000 2 2 2 2 2
output:
400
result:
ok single line: '400'
Test #9:
score: 0
Accepted
time: 1ms
memory: 3784kb
input:
980 991 978 2 1 2 1 2 3 1 1 1 3 3 3 2 2 2 2 3 3 1 3 1 2 2 3 1 2 3 3 2 3 1 2 2 3 1 3 1 3 2 2 2 1 1 2 3 3 1 2 1 1 1 2 2 2 3 3 2 1 3 3 1 3 3 1 1 2 1 1 1 1 2 1 2 3 2 1 1 3 3 2 2 1 3 3 3 2 2 3 1 2 3 3 2 2 3 2 3 2 2 2 1 3 3 1 1 3 1 2 2 2 2 1 2 2 1 1 3 2 1 1 3 1 2 3 3 3 3 3 2 2 2 3 3 1 1 2 1 3 3 3 2 2 2 3 ...
output:
492
result:
ok single line: '492'
Test #10:
score: 0
Accepted
time: 3ms
memory: 3600kb
input:
980 967 994 6 1 4 6 10 10 8 5 5 9 2 8 10 1 8 7 10 1 7 3 7 1 4 10 2 5 7 5 2 5 4 9 4 9 8 1 9 8 9 8 4 1 3 2 4 9 4 2 8 7 5 7 9 9 1 4 10 10 3 7 5 4 1 1 6 7 8 6 6 9 9 9 10 10 9 10 9 10 7 9 4 3 9 8 3 5 2 1 3 5 9 3 6 4 10 8 2 2 8 4 2 4 8 1 2 9 1 2 6 10 3 4 9 9 9 10 10 10 2 6 2 5 5 7 10 9 9 3 10 8 4 9 6 3 10...
output:
179
result:
ok single line: '179'
Test #11:
score: 0
Accepted
time: 3ms
memory: 3604kb
input:
995 997 962 48 41 40 40 41 50 45 43 42 49 40 49 43 50 50 47 47 48 41 43 40 43 41 43 41 49 43 46 41 48 45 42 44 47 44 46 44 46 40 42 43 45 43 45 40 41 49 41 45 40 48 43 50 48 45 43 50 46 44 48 50 48 44 44 42 41 48 50 49 41 48 48 48 46 45 43 47 48 49 48 41 40 46 44 43 40 42 44 43 46 43 43 47 42 43 40 ...
output:
21
result:
ok single line: '21'
Test #12:
score: 0
Accepted
time: 2ms
memory: 3712kb
input:
962 981 996 85 234 239 585 600 759 968 366 415 610 749 684 701 524 796 720 733 404 182 216 856 378 210 643 306 203 831 212 413 171 568 562 406 793 475 937 64 958 209 81 563 566 810 531 903 600 820 914 395 502 216 673 573 882 604 161 720 461 43 105 822 406 476 446 60 285 268 795 637 561 129 962 619 3...
output:
1
result:
ok single line: '1'
Test #13:
score: 0
Accepted
time: 4ms
memory: 3792kb
input:
992 965 983 567 702 416 603 427 787 855 407 646 406 964 869 518 484 721 455 539 433 440 695 376 932 704 794 928 946 642 607 897 592 336 904 852 458 377 618 645 800 512 924 840 745 819 791 539 520 750 896 452 441 573 678 377 927 789 425 458 318 628 564 738 580 347 861 913 407 833 721 421 849 941 415 ...
output:
1
result:
ok single line: '1'
Test #14:
score: 0
Accepted
time: 117ms
memory: 14180kb
input:
191517 972629409 971799494 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
4935336119068
result:
ok single line: '4935336119068'
Test #15:
score: 0
Accepted
time: 125ms
memory: 18728kb
input:
200000 999999999 1000000000 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
output:
2499999995000
result:
ok single line: '2499999995000'
Test #16:
score: 0
Accepted
time: 122ms
memory: 14004kb
input:
197730 987961966 960644645 1 2 3 2 2 3 3 3 1 1 2 2 2 1 1 1 1 1 2 2 1 3 3 3 2 1 3 1 1 3 2 2 2 3 2 3 2 2 3 3 1 1 3 1 3 1 3 3 2 2 3 3 1 2 2 3 1 3 3 1 1 1 2 3 2 1 1 1 1 3 2 3 3 3 3 2 1 2 1 2 2 3 3 3 1 3 2 1 3 3 1 1 1 1 2 2 3 3 2 2 3 3 1 2 2 1 1 1 1 2 2 1 2 3 1 2 1 3 2 1 1 1 2 3 2 2 1 3 2 2 3 3 1 1 3 3 2...
output:
2400352995224
result:
ok single line: '2400352995224'
Test #17:
score: 0
Accepted
time: 116ms
memory: 13968kb
input:
192667 981519468 981087383 3 4 10 7 8 1 5 1 7 8 8 4 7 1 5 1 6 1 2 1 6 9 3 9 5 10 7 10 3 6 2 6 8 9 5 2 10 4 10 1 7 1 9 5 3 6 9 6 10 7 9 5 1 6 1 6 5 7 10 10 6 10 8 4 6 3 1 9 1 6 6 9 4 7 5 6 5 7 1 3 6 6 3 4 1 9 4 9 8 8 2 2 1 3 2 7 5 3 7 6 2 10 5 6 5 9 1 8 9 9 9 5 3 2 9 4 3 10 9 9 3 7 10 7 3 3 10 7 2 3 ...
output:
909686916772
result:
ok single line: '909686916772'
Test #18:
score: 0
Accepted
time: 120ms
memory: 13928kb
input:
198400 996823531 976959788 43 47 44 50 44 46 41 40 50 47 43 49 48 42 47 45 47 41 43 41 40 46 49 44 46 48 46 46 42 42 45 47 50 46 48 50 50 40 45 43 40 43 45 44 47 49 50 44 42 45 42 49 48 43 43 45 50 47 42 44 49 49 42 49 48 45 44 40 50 40 42 42 42 46 47 47 49 42 42 43 40 41 47 41 49 41 46 50 44 42 43 ...
output:
109090881841
result:
ok single line: '109090881841'
Test #19:
score: 0
Accepted
time: 125ms
memory: 13860kb
input:
195647 974282103 972882622 432 354 760 958 58 181 803 419 310 137 506 88 972 726 834 479 408 215 752 474 552 689 167 503 691 726 563 418 622 186 661 123 321 214 882 152 137 14 791 470 712 299 425 403 85 221 749 649 376 342 422 89 229 317 349 508 780 635 626 731 232 741 644 318 364 864 729 921 370 80...
output:
9685174728
result:
ok single line: '9685174728'
Test #20:
score: 0
Accepted
time: 147ms
memory: 13900kb
input:
193934 958782661 952100506 173885 135659 161389 190344 153931 178916 120485 140968 147416 103017 185975 114364 145315 119943 194090 119852 103788 117034 198084 123982 176866 171769 102811 157954 118763 153238 148182 149743 106357 135115 171583 153426 114860 100981 195778 119457 111558 184289 182621 ...
output:
31368417
result:
ok single line: '31368417'
Test #21:
score: 0
Accepted
time: 139ms
memory: 18536kb
input:
197587 969369471 958326403 562864350 179110069 840760703 539101570 619018241 591243727 802298459 341842285 319778295 829272269 704464734 948191740 521694671 947718773 668891006 156315045 933274269 514307940 724872162 282336223 4812411 925022043 488956634 164962689 713042567 156733510 795980505 30329...
output:
7268
result:
ok single line: '7268'
Test #22:
score: 0
Accepted
time: 128ms
memory: 18144kb
input:
190729 998654926 953563254 806691863 488651193 814044068 712278157 771718816 739778712 544717778 895515396 732845471 878834165 414327410 371586223 890270288 885258319 842740469 723233201 679517241 751573053 857863507 706771221 716899272 363503588 456315561 860921465 801645319 635247679 624753451 846...
output:
5667
result:
ok single line: '5667'
Test #23:
score: 0
Accepted
time: 2ms
memory: 3624kb
input:
3 9 5 1 2 3
output:
7
result:
ok single line: '7'
Test #24:
score: 0
Accepted
time: 2ms
memory: 3548kb
input:
4 10 5 3 2 4 6
output:
2
result:
ok single line: '2'
Test #25:
score: 0
Accepted
time: 0ms
memory: 3560kb
input:
3 10 2 5 6 7
output:
0
result:
ok single line: '0'