QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#377316#8112. Pastry shopSolitaryDream#WA 12ms58228kbC++171.6kb2024-04-05 12:24:232024-04-05 12:24:23

Judging History

This is the latest submission verdict.

  • [2024-04-05 12:24:23]
  • Judged
  • Verdict: WA
  • Time: 12ms
  • Memory: 58228kb
  • [2024-04-05 12:24:23]
  • Submitted

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'