QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#377316 | #8112. Pastry shop | SolitaryDream# | WA | 12ms | 58228kb | C++17 | 1.6kb | 2024-04-05 12:24:23 | 2024-04-05 12:24:23 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;
const int N = 1e6 + 10;
int n, m, t[N];
int fa[N], sm[N], ans[N];
vector<pii> ev[N];
vector<int> que[N];
inline int Updiv(int x, int y) {
return (x + y - 1) / y;
}
inline int Ask(int x) {
return fa[x] >= 0 ? fa[x] = Ask(fa[x]) : x;
}
int A, B; // current ans = A i + b
inline void Append(int x, int qu) {
int rt = Ask(x);
int si = -fa[rt];
A += ((0 + si - 1) * si / 2) * qu;
B += (si * t[rt - si + 1] - sm[rt]) * qu;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> t[i];
if (t[i] - t[i - 1] < N) ev[t[i] - t[i - 1]].push_back({i - 1, i});
}
t[n + 1] = 1e18;
for (int i = 1, x; i <= m; ++i) {
cin >> x;
que[x].push_back(i);
}
for (int i = 0; i <= n + 1; ++i) {
fa[i] = -1;
sm[i] = t[i];
}
for (int i = 0; i < N; ++i) {
for (auto [x, y] : ev[i]) {
x = Ask(x); y = Ask(y);
if (x == y) continue;
Append(x, -1);
Append(y, -1);
fa[y] += fa[x];
sm[y] += sm[x];
fa[x] = y;
Append(x, 1);
int si = -fa[y];
int nxt = Updiv(t[y + 1] - t[y - si + 1], si);
if (nxt < N) ev[nxt].push_back({y, y + 1});
}
for (auto x : que[i]) {
ans[x] = A * i + B;
}
}
for (int i = 1; i <= m; ++i) cout << ans[i] << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 10ms
memory: 56664kb
input:
4 3 3 10 11 23 4 2 5
output:
4 1 6
result:
ok 3 number(s): "4 1 6"
Test #2:
score: -100
Wrong Answer
time: 12ms
memory: 58228kb
input:
100 100 1 3 5 5 6 10 10 12 13 14 14 14 14 15 16 17 18 19 19 19 20 22 24 26 26 29 29 30 30 30 31 31 32 32 33 36 37 38 40 40 42 43 43 46 47 47 48 49 55 56 59 60 61 61 63 64 64 65 65 66 67 68 72 74 76 76 77 79 80 80 81 81 81 81 82 82 82 84 84 84 85 87 87 88 89 89 89 90 90 91 91 91 92 93 94 95 99 100 10...
output:
439025 252175 40075 70375 439025 120875 292575 221875 363275 312775 484475 125925 115825 393575 100675 60275 474375 358225 206725 231975 75425 9007 439025 40075 403675 242075 343075 428925 29975 115825 479425 348125 60275 45125 489525 302675 120875 186525 257225 24925 439025 489525 449125 60275 5017...
result:
wrong answer 22nd numbers differ - expected: '9775', found: '9007'