QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#444400#8648. Towerbashkort#0 172ms14156kbC++202.3kb2024-06-15 18:47:212024-06-15 18:47:22

Judging History

你现在查看的是最新测评结果

  • [2024-06-15 18:47:22]
  • 评测
  • 测评结果:0
  • 用时:172ms
  • 内存:14156kb
  • [2024-06-15 18:47:21]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, q;
    cin >> n >> q;

    ll D, A, B;
    cin >> D >> A >> B;

    vector<pair<ll, ll>> s(n);
    for (auto &[l, r] : s) {
        cin >> l >> r;
    }
    n += 1;
    s.push_back({3e18, 3e18});

    vector<ll> X(q);
    for (int i = 0; i < q; ++i) {
        cin >> X[i];
    }

    set<pair<ll, ll>> t;
    t.insert({0, 0});

    auto add = [&](ll l, ll r) {
        auto it = t.lower_bound({l + 1, -1});
        if (it != t.begin() && prev(it)->second >= r) {
            return;
        }
        ll nxr = r;
        while (it != t.end()) {
            if (it->first > nxr + 1) {
                break;
            }
            nxr = it->second;
            it = t.erase(it);
        }
        it = t.lower_bound({l + 1, -1});
        if (it != t.begin()) {
            ll nxl = l;
            while (it != t.begin()) {
                --it;
                if (it->second + 1 < nxl) {
                    break;
                }
                nxl = it->first;
                it = t.erase(it);
            }
            l = nxl;
        }
        t.emplace(l, nxr);
    };

    for (int i = 0; i < n; ++i) {
        ll L = s[i].first;
        ll P = (i == 0 ? 0 : s[i - 1].second + 1);
        auto it = t.lower_bound(pair(P, -1));
        ll mn = 3e18;
        if (it != t.end()) {
            mn = min(mn, it->first);
        }
        if (it != t.begin()) {
            --it;
            if (it->second >= P) {
                mn = min(mn, P);
            }
        }
        if (mn >= L) {
            continue;
        }
        ll l = mn, r = L - 1;
        add(l, r);
        add(l + D, r + D);
    }

    for (int i = 0; i < q; ++i) {
        ll x = X[i];
        auto it = std::lower_bound(s.begin(), s.end(), pair<ll, ll>(x + 1, -1)) - s.begin();
        if (it != 0 && s[it - 1].second >= x) {
            cout << "-1\n";
        } else {
            auto f = t.lower_bound({x + 1, -1});
            if (f != t.begin() && prev(f)->second >= x) {
                cout << x << '\n';
            } else {
                cout << "-1\n";
            }
        }
    }

    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 37ms
memory: 5120kb

input:

2000 200000
500 66309 387245
91 122
793 1029
1127 1131
1304 1611
2007 2039
2601 2701
2906 3052
3253 3263
3495 3609
4157 4225
4283 4283
4757 4766
4786 4847
4885 5086
5326 5342
5607 5750
5847 5877
6093 6230
6548 6793
7206 7308
7413 7419
7752 7780
8244 8410
8501 8515
9335 9447
9512 9514
9602 9906
10076...

output:

-1
-1
518454
-1
460739
-1
-1
516869
397951
277462
97062
-1
103083
46781
218958
500518
422729
231379
205830
468529
283073
528355
23490
-1
198511
287802
351204
357532
153033
-1
77262
90964
14867
-1
257627
517911
-1
-1
-1
363664
247441
-1
16410
289148
81378
13540
66595
-1
388036
177970
517361
-1
-1
-1
...

result:

wrong answer 3rd lines differ - expected: '1545376776', found: '518454'

Subtask #2:

score: 0
Wrong Answer

Test #29:

score: 0
Wrong Answer
time: 2ms
memory: 3664kb

input:

1938 1960
999999 47694 9291
2883622 3085639
3674880 3745876
9982198101 9982517489
19960889157 19960925795
19962228551 19962276101
19964301694 19964730442
19964826417 19965369252
19965984922 19966442459
19968019821 19968213820
19968334967 19968392242
19968426638 19968840337
19969017519 19969109591
19...

output:

600068416509
449910545782
-1
-1
-1
249945231892
59944483446
-1
800037846701
79997408529
319895606463
59946012179
39957395086
499995615624
640062070774
790043447181
469950866293
459937041572
-1
710049962817
-1
-1
-1
129951143928
630060713146
-1
750024638948
-1
-1
600058146469
500006743612
24993696514...

result:

wrong answer 1st lines differ - expected: '2629532778036', found: '600068416509'

Subtask #3:

score: 0
Wrong Answer

Test #44:

score: 0
Wrong Answer
time: 172ms
memory: 14156kb

input:

198085 196577
999999 1 999999
562622 895604
1799586 1975565
2518299 2941986
4934097 5403130
5755102 5996130
6036200 6112534
6391882 6431514
6451793 6555786
6613625 6621089
7130933 7204522
7335426 7522555
7748545 7784568
8184979 8494887
9066856 9178094
9303615 9384897
9716200 9719420
11693951 1183563...

output:

27793636591
139076373265
-1
-1
164554928593
340203577240
767735640886
-1
808488370439
777661458222
428941062963
-1
756913262477
860152123456
-1
734774231229
724225013316
184932545705
418133621292
-1
890908770677
450977017227
806542610691
-1
898938307262
536837237896
805921470285
-1
588880769556
-1
4...

result:

wrong answer 143rd lines differ - expected: '638030562602', found: '-1'

Subtask #4:

score: 0
Skipped

Dependency #1:

0%