QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#53337 | #2929. Concert Rehearsal | thomas_harmeyer | WA | 127ms | 15460kb | C++ | 2.4kb | 2022-10-04 23:01:50 | 2022-10-04 23:01:53 |
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<int, long long> pii;
typedef vector<int> vi;
ll solve() {
// input
int n; // num of players
int p; // day length
int 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 (int 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 (int left = 0; left < n; left++) {
ll lo = 0, diff = (1LL) << 34LL;
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<int> vist(n, -1);
pii cur(0, 0);
cum.push_back(cur);
while (vist[cur.first] == -1) {
vist[cur.first] = (int)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 < (int)cum.size() - 1) {
return cum[k].second / n;
}
ll ans = cum[cum.size() - 1].second;
k -= (int)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: 3648kb
input:
3 20 10 6 9 5
output:
10
result:
ok single line: '10'
Test #2:
score: 0
Accepted
time: 2ms
memory: 3656kb
input:
5 11 2 5 5 5 5 5
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 2ms
memory: 3628kb
input:
7 11 3 1 2 3 4 5 6 7
output:
1
result:
ok single line: '1'
Test #4:
score: 0
Accepted
time: 2ms
memory: 3620kb
input:
4 8 9 2 7 2 3
output:
4
result:
ok single line: '4'
Test #5:
score: 0
Accepted
time: 2ms
memory: 3552kb
input:
1 3 7 2
output:
7
result:
ok single line: '7'
Test #6:
score: 0
Accepted
time: 2ms
memory: 3652kb
input:
1 1000000000 1000000000 1
output:
1000000000000000000
result:
ok single line: '1000000000000000000'
Test #7:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
5 999999999 999999999 2 1 4 7 3
output:
58823528941176471
result:
ok single line: '58823528941176471'
Test #8:
score: 0
Accepted
time: 2ms
memory: 3624kb
input:
5 5 1000 2 2 2 2 2
output:
400
result:
ok single line: '400'
Test #9:
score: 0
Accepted
time: 2ms
memory: 3616kb
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: 0ms
memory: 3696kb
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: 3720kb
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: 3572kb
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: 3ms
memory: 3632kb
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: 122ms
memory: 11188kb
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: 126ms
memory: 15428kb
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: 121ms
memory: 9820kb
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: 119ms
memory: 9664kb
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: 121ms
memory: 9840kb
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: 121ms
memory: 9772kb
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: -100
Wrong Answer
time: 127ms
memory: 15460kb
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:
-21551475564732
result:
wrong answer 1st lines differ - expected: '31368417', found: '-21551475564732'