QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#401673 | #7111. Press the Button | miaokx# | WA | 1ms | 3704kb | C++20 | 2.2kb | 2024-04-29 08:55:58 | 2024-04-29 08:55:58 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
long long a, b, c, d, v, t;
ll cal(ll x, bool &state) {
ll cur = 0;
ll timer_end = -1;
ll counter = 0;
while (true) {
bool light = timer_end > cur;
if (cur % a == 0) {
if (!light) {
counter += b-1;
} else {
counter += b;
}
timer_end = cur + v + 1;
}
light = timer_end > cur;
if (cur % c == 0) {
if (!light) {
counter += d-1;
} else {
counter += d;
}
timer_end = cur + v + 1;
}
ll nxt = x;
if (cur % a != 0) {
ll temp = (cur+a-1)/a*a;
nxt = min(nxt, temp);
}
if (cur % c != 0) {
ll temp = (cur+c-1)/c*c;
nxt = min(nxt, temp);
}
// if (cur % a == 0 && cur % c == 0) {
ll temp = cur + min(a, c);
nxt = min(nxt, temp);
// }
// cout << cur << ' ' << counter << '\n';
// end the game afte pressing button
if (cur == x) break;
cur = nxt;
}
if (timer_end >= x) state = true;
return counter;
}
void solve() {
cin >> a >> b >> c >> d >> v >> t;
a *= 2;
c *= 2;
v *= 2;
t *= 2;
if (v + 1 > min(a, c)) {
cout << (t/a+1)*b+(t/c+1)*d-1 << '\n';
return;
}
// calculate what happens in a lcm
ll LCM = a / __gcd(a,c) * c;
bool st = false;
ll num = t / LCM;
ll ans = 0;
if (num == 0) {
ans = cal(t, st);
} else {
ll sol = cal(LCM, st);
if (st) ans += sol + (num-1)*(sol+1);
else ans += num * sol;
if (t%LCM) ans += cal(t % LCM, st);
}
cout << ans << '\n';
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin.exceptions(cin.failbit);
int t;
cin >>t;
while (t--)
solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3704kb
input:
2 8 2 5 1 2 18 10 2 5 1 2 10
output:
6 4
result:
ok 2 number(s): "6 4"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 3652kb
input:
1000 8 6 2 6 3 17 1 6 1 1 1 30 5 4 8 8 1 31 7 6 10 3 6 12 9 1 4 4 3 38 3 3 5 8 1 8 9 1 5 2 3 18 6 10 10 8 2 40 9 6 9 10 3 9 2 5 1 10 10 39 7 7 1 2 4 19 8 10 8 6 7 36 2 9 1 1 7 17 1 2 3 5 6 14 8 8 8 7 1 46 6 9 3 9 4 6 10 8 1 7 10 18 7 1 7 10 3 50 1 10 2 1 5 1 5 8 4 9 7 44 9 2 5 4 7 42 9 1 2 1 1 20 5 ...
output:
71 216 52 16 42 22 7 119 30 499 60 138 98 54 158 44 148 156 20 179 45 5 463 139 64 51 45 127 204 121 42 69 38 98 63 121 25 142 17 75 24 175 143 40 32 11 29 85 35 7 83 49 492 49 49 14 17 53 431 161 94 27 21 135 71 92 45 290 57 300 18 89 182 55 10 219 203 390 28 50 67 213 39 31 27 19 128 101 118 62 46...
result:
wrong answer 5th numbers differ - expected: '38', found: '42'