QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#562039#3563. Treatment Projectseungni9 74ms274008kbC++175.1kb2024-09-13 14:28:212024-09-13 14:28:21

Judging History

This is the latest submission verdict.

  • [2024-09-13 14:28:21]
  • Judged
  • Verdict: 9
  • Time: 74ms
  • Memory: 274008kb
  • [2024-09-13 14:28:21]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using pii = pair<ll, ll>;
const ll inf = 0x3f3f3f3f3f3f3f3fLL;

ll N, M, sz;
pair<ll, pair<pii, ll>> arr[100005];
vector<pii> graph[100005];
ll seg[200505 * 2];

void update(int pos, ll v) {
    pos += sz;
    seg[pos] = min(seg[pos], v);
    for (; pos > 0; pos >>= 1) seg[pos >> 1] = min(seg[pos], seg[pos ^ 1]);
    return;
}

ll query(int l, int r) {
    r++;
    ll ret = inf;
    for (l += sz, r += sz; l < r; l >>= 1, r >>= 1) {
        if (l & 1) ret = min(ret, seg[l++]);
        if (r & 1) ret = min(ret, seg[--r]);
    }
    return ret;
}

void Dijkstra(int S, vector<ll> &dist) {
    priority_queue<pii, vector<pii>, greater<>> pq;
    dist[S] = 0;
    pq.push({0, S});
    
    while (pq.size()) {
        pii t = pq.top();
        pq.pop();
        ll now = t.second, v = t.first;
        if (dist[now] < v) continue;
        
        for (auto &[next, cost]: graph[now]) {
            ll ncost = v + cost;
            if (dist[next] > ncost) {
                dist[next] = ncost;
                pq.push({ncost, next});
            }
        }
    }
}

void subtask_1() {
    vector<ll> v;
    v.push_back(0);
    v.push_back(1), v.push_back(N);
    for (int i = 0; i < M; i++) {
        v.push_back(arr[i].second.first.first);
        v.push_back(arr[i].second.first.second);
    }
    
    sort(v.begin(), v.end());
    v.erase(unique(v.begin(), v.end()), v.end());
    
    sz = v.size();
    
    sort(arr, arr + M, [&](pair<ll, pair<pii, ll>> a, pair<ll, pair<pii, ll>> b) {
        return a.second.first.second < b.second.first.second;
    });
    for (int i = 0; i < M; i++) {
        ll L = arr[i].second.first.first, R = arr[i].second.first.second;
        L = lower_bound(v.begin(), v.end(), L) - v.begin();
        R = lower_bound(v.begin(), v.end(), R) - v.begin();
        arr[i].second.first = {L, R};
    }
    
    vector<ll> dp(sz + 5, inf);
    memset(seg, 0x3f, sizeof(seg));
    dp[0] = 0;
    update(0, dp[0]);
    
    for (int i = 0; i < M; i++) {
        ll l = arr[i].second.first.first, r = arr[i].second.first.second, c = arr[i].second.second;
        ll idx = lower_bound(v.begin(), v.end(), v[l] - 1) - v.begin();
        dp[r] = min(dp[r], query(idx, r) + c);
        update(r, dp[r]);
    }
    
    int idx = lower_bound(v.begin(), v.end(), N) - v.begin();
    if (dp[idx] == inf) cout << -1;
    else cout << dp[idx];
    return;
}

void subtask_2() {
    ll ans = inf;
    
    sort(arr, arr + M);
    
    for (int i = 0; i < (1 << M); i++) {
        vector<int> v;
        ll cost = 0;
        for (int j = 0; j < M; j++) {
            if (i & (1 << j)) v.push_back(j), cost += arr[j].second.second;
        }
        
        vector<pair<pii, ll>> now;
        now.push_back({{1, N}, 0});
        
        for (int j: v) {
            vector<pair<pii, ll>> nxt;
            ll T = arr[j].first, L = arr[j].second.first.first, R = arr[j].second.first.second;
            for (auto &[range, t]: now) {
                ll l = range.first, r = range.second;
                l -= T - t, l = max(l, 1LL);
                r += T - t, r = min(r, N);
                if (l < L) nxt.push_back({{l, min(r, L - 1)}, T});
                if (r > R) nxt.push_back({{max(l, R + 1), r}, T});
            }
            swap(nxt, now);
        }
        
        if (now.empty()) ans = min(ans, cost);
    }
    
    if (ans == inf) cout << -1;
    else cout << ans;
    
    return;
}

void subtask_3() {
    sort(arr, arr + M);
    for (int i = 0; i < M; i++) {
        ll t1 = arr[i].first, l1 = arr[i].second.first.first, r1 = arr[i].second.first.second, c1 = arr[i].second.second;
        for (int j = 0; j < M; j++) {
            ll t2 = arr[j].first, l2 = arr[j].second.first.first, r2 = arr[j].second.first.second, c2 = arr[j].second.second;
            ll diff = abs(t2 - t1);
            if (r1 - diff + 1 >= l2) graph[i].push_back({j, c2});
        }
    }
    
    int S = M;
    for (int i = 0; i < M; i++) {
        if (arr[i].second.first.first == 1) graph[S].push_back({i, 0});
    }
    
    vector<ll> dist(M + 5, inf);
    Dijkstra(S, dist);
    
    ll ans = inf;
    
    for (int i = 0; i < M; i++) {
        if (arr[i].second.first.second == N) ans = min(ans, dist[i]);
    }
    
    if (ans == inf) cout << -1;
    else cout << ans;
    
    return;
}

void solve() {
    cin >> N >> M;
    
    int sub_task1 = 1, sub_task2 = (M <= 16), sub_task3 = (M <= 5000);
    
    for (int i = 0; i < M; i++) {
        ll T, L, R, C;
        cin >> T >> L >> R >> C;
        if (T != 1) sub_task1 = 0;
        arr[i] = {T, {{L, R}, C}};
    }
    
    if (sub_task1) {
        subtask_1();
        return;
    }
    
    if (sub_task2) {
        subtask_2();
        return;
    }
    
    if (sub_task3) {
        subtask_3();
        return;
    }
    
    return;
}

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t = 1;
    //cin >> t;
    while (t--) solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 4
Accepted

Test #1:

score: 4
Accepted
time: 56ms
memory: 14940kb

input:

1000000000 100000
1 811370001 811380000 1000000000
1 413190001 413200000 1000000000
1 462480001 462490000 1000000000
1 384860001 384870000 1000000000
1 543220001 543230000 1000000000
1 766300001 766310000 1000000000
1 348890001 348900000 1000000000
1 996350001 996360000 1000000000
1 302700001 302710...

output:

100000000000000

result:

ok single line: '100000000000000'

Test #2:

score: 4
Accepted
time: 55ms
memory: 15020kb

input:

1000000000 100000
1 949530001 949540000 1000000000
1 739970001 739980000 1000000000
1 199740001 199750000 1000000000
1 481170001 481180000 1000000000
1 691390001 691400000 1000000000
1 694040001 694050000 1000000000
1 229990001 230000000 1000000000
1 306470001 306480000 1000000000
1 293790001 293800...

output:

-1

result:

ok single line: '-1'

Test #3:

score: 4
Accepted
time: 54ms
memory: 13544kb

input:

1000000000 100000
1 999950001 999976550 1550
1 22208 50000 2793
1 18436 50000 6565
1 999999902 1000000000 99
1 1 1959 1959
1 999987171 1000000000 12830
1 13195 50000 11806
1 999950001 999987417 12417
1 999950001 999996988 21988
1 999950001 999994504 19504
1 999950001 999987988 12988
1 999950001 9999...

output:

49999

result:

ok single line: '49999'

Test #4:

score: 4
Accepted
time: 55ms
memory: 13520kb

input:

1000000000 100000
1 18068 50000 6933
1 999950001 999987700 12700
1 1 3107 3107
1 18416 50000 6585
1 999981021 1000000000 18980
1 999989599 1000000000 10402
1 999981949 1000000000 18052
1 1 23318 23318
1 999950001 999977889 2889
1 999989735 1000000000 10266
1 999950001 999977002 2002
1 999977230 1000...

output:

49998

result:

ok single line: '49998'

Test #5:

score: 4
Accepted
time: 36ms
memory: 13596kb

input:

1000000000 100000
1 1 10000000 145793232
1 10000001 20000000 480576404
1 20000001 30000000 579478535
1 30000001 40000000 972724773
1 40000001 50000000 195930803
1 50000001 60000000 42390962
1 60000001 70000000 280311272
1 70000001 80000000 265006415
1 80000001 90000000 646778234
1 90000001 100000000...

output:

103256696

result:

ok single line: '103256696'

Test #6:

score: 4
Accepted
time: 29ms
memory: 13256kb

input:

1000000000 100000
1 1 1000000 84881992
1 1000001 2000000 96486607
1 2000001 3000000 87474151
1 3000001 4000000 308931873
1 4000001 5000000 752155772
1 5000001 6000000 71781449
1 6000001 7000000 574465725
1 7000001 8000000 257711828
1 8000001 9000000 976891771
1 9000001 10000000 737457473
1 10000001 ...

output:

10202525555

result:

ok single line: '10202525555'

Test #7:

score: 4
Accepted
time: 37ms
memory: 13684kb

input:

1000000000 100000
1 1 100000 691341803
1 100001 200000 909165531
1 200001 300000 998253633
1 300001 400000 186389967
1 400001 500000 182412146
1 500001 600000 620222523
1 600001 700000 290853217
1 700001 800000 77492636
1 800001 900000 595119065
1 900001 1000000 632152167
1 1000001 1100000 751499859...

output:

911635058003

result:

ok single line: '911635058003'

Test #8:

score: 4
Accepted
time: 27ms
memory: 13440kb

input:

1000000000 100000
1 1 10000000 215217992
1 10000002 20000001 257813843
1 20000003 30000002 409648986
1 30000004 40000003 74292373
1 40000005 50000004 346679152
1 50000006 60000005 168032896
1 60000007 70000006 978832613
1 70000008 80000007 972209778
1 80000009 90000008 504905160
1 90000010 100000009...

output:

-1

result:

ok single line: '-1'

Test #9:

score: 4
Accepted
time: 34ms
memory: 13304kb

input:

1000000000 100000
1 1 1000000 339975845
1 1000002 2000001 924553880
1 2000003 3000002 221514681
1 3000004 4000003 814700766
1 4000005 5000004 606897055
1 5000006 6000005 542007635
1 6000007 7000006 833481194
1 7000008 8000007 36174314
1 8000009 9000008 677730964
1 9000010 10000009 328173604
1 100000...

output:

-1

result:

ok single line: '-1'

Test #10:

score: 4
Accepted
time: 41ms
memory: 13640kb

input:

1000000000 100000
1 1 100000 546836013
1 100002 200001 79898605
1 200003 300002 355510933
1 300004 400003 613504881
1 400005 500004 608643061
1 500006 600005 346108380
1 600007 700006 94237328
1 700008 800007 615885675
1 800009 900008 144998423
1 900010 1000009 452673262
1 1000011 1100010 602954095
...

output:

-1

result:

ok single line: '-1'

Test #11:

score: 4
Accepted
time: 73ms
memory: 14584kb

input:

1000000000 100000
1 303811818 829165054 198988627
1 238315172 721819143 141698606
1 735738067 1000000000 894452247
1 361644024 743722594 115600786
1 833044862 1000000000 829396821
1 978649195 1000000000 121635824
1 656681592 1000000000 273711306
1 496003357 1000000000 145092871
1 545905300 100000000...

output:

685378438

result:

ok single line: '685378438'

Test #12:

score: 4
Accepted
time: 74ms
memory: 14532kb

input:

1000000000 100000
1 943316546 1000000000 216982980
1 19370137 444718109 622200963
1 244137695 646936606 337228786
1 721168313 1000000000 871779123
1 692826909 1000000000 475559515
1 172759072 444193083 393558194
1 902352909 1000000000 592749518
1 784704501 1000000000 46903352
1 476674919 820551472 7...

output:

8545005

result:

ok single line: '8545005'

Test #13:

score: 4
Accepted
time: 61ms
memory: 14972kb

input:

1000000000 100000
1 299540356 301014664 918798031
1 47063831 49122175 319472906
1 643593754 649240559 786327287
1 911355484 912220834 661864920
1 421773565 425654542 547070484
1 121293018 127328807 600494728
1 124896424 134073887 732623470
1 847918166 848422995 357034382
1 202634733 207639979 227135...

output:

640648629

result:

ok single line: '640648629'

Test #14:

score: 4
Accepted
time: 65ms
memory: 14920kb

input:

1000000000 100000
1 292785668 302238617 735249885
1 330242772 339770867 834706107
1 389294923 391540047 458089101
1 450680389 453059619 143967320
1 454972829 463399723 466799715
1 753057870 755431216 100716135
1 504170097 513605690 434206234
1 103062686 108678675 31594524
1 223332793 230476444 90289...

output:

566131778

result:

ok single line: '566131778'

Test #15:

score: 4
Accepted
time: 65ms
memory: 14932kb

input:

1000000000 100000
1 190249900 190686929 373454997
1 552611497 552775726 389849882
1 982934744 983745458 824523947
1 864133080 864437303 440840591
1 981480585 981574825 416048337
1 511607007 511657019 77913748
1 821534632 821810240 544332427
1 296802128 297062333 660771431
1 208063734 208493818 19912...

output:

60507750537

result:

ok single line: '60507750537'

Test #16:

score: 4
Accepted
time: 57ms
memory: 14916kb

input:

1000000000 100000
1 275121708 275841780 671595176
1 466556774 466575868 484670561
1 760216631 761110424 380331015
1 131452988 132345955 12662694
1 977640557 977642896 579869191
1 935760533 936394211 785322933
1 417528094 418262446 872043777
1 368926107 369906582 303043171
1 788412117 789358347 37981...

output:

60944102933

result:

ok single line: '60944102933'

Test #17:

score: 4
Accepted
time: 59ms
memory: 14896kb

input:

1000000000 100000
1 83134378 83939878 8
1 592189499 592792264 8
1 259250315 260076619 3
1 509562779 509615501 4
1 457433813 457988991 1
1 214916666 215313641 3
1 995959398 996917301 4
1 621550403 622406127 9
1 675067804 675700091 10
1 820894516 821281795 6
1 166308237 166609937 9
1 242380815 2431201...

output:

1663

result:

ok single line: '1663'

Test #18:

score: 4
Accepted
time: 63ms
memory: 14540kb

input:

1000000000 100000
1 943522993 1000000000 9
1 638122273 1000000000 5
1 285857010 626474643 4
1 356193761 483694746 3
1 257614831 796690153 1
1 575897497 1000000000 1
1 266218267 476247529 8
1 383225791 1000000000 2
1 561953671 1000000000 10
1 873960336 1000000000 9
1 33852012 588412399 3
1 496409891 ...

output:

4

result:

ok single line: '4'

Subtask #2:

score: 5
Accepted

Test #19:

score: 5
Accepted
time: 2ms
memory: 9912kb

input:

1 1
1000000000 1 1 1000000000

output:

1000000000

result:

ok single line: '1000000000'

Test #20:

score: 5
Accepted
time: 19ms
memory: 7664kb

input:

1000000000 16
6 2 2 1
4 999999997 999999999 4
2 999999997 1000000000 2
3 1 4 3
3 999999997 1000000000 3
5 999999998 999999999 3
6 999999999 999999999 1
2 1 4 2
6 3 999999998 1
999999987 1 1000000000 10
999999986 1 1000000000 10
999999985 1 1000000000 10
4 2 4 4
5 2 3 3
1 999999997 1000000000 1
1 1 4 1

output:

9

result:

ok single line: '9'

Test #21:

score: 5
Accepted
time: 24ms
memory: 7700kb

input:

1000000000 16
5 999999998 999999999 2
999999985 1 1000000000 8
5 2 3 3
2 1 4 2
4 2 4 3
6 3 999999998 1
1 999999997 1000000000 1
6 999999999 999999999 2
6 2 2 2
2 999999997 1000000000 2
3 999999997 1000000000 3
4 999999997 999999999 4
999999987 1 1000000000 10
1 1 4 1
999999986 1 1000000000 10
3 1 4 3

output:

8

result:

ok single line: '8'

Test #22:

score: 5
Accepted
time: 42ms
memory: 7564kb

input:

1000000000 16
200000001 3 100000003 1000000000
1 1 100000001 1000000000
400000001 5 100000005 1000000000
1 900000000 1000000000 1000000000
500000001 899999995 999999995 1000000000
500000001 6 100000006 1000000000
600000001 899999994 999999994 1000000000
700000001 500000001 999999993 1000000000
40000...

output:

16000000000

result:

ok single line: '16000000000'

Test #23:

score: 5
Accepted
time: 44ms
memory: 7572kb

input:

1000000000 16
100000001 2 100000001 1000000000
500000001 6 100000006 1000000000
300000001 899999997 999999997 1000000000
700000001 8 500000000 1000000000
400000001 899999996 999999996 1000000000
1 1 100000001 1000000000
100000001 899999999 999999999 1000000000
200000001 3 100000003 1000000000
600000...

output:

-1

result:

ok single line: '-1'

Test #24:

score: 5
Accepted
time: 20ms
memory: 9628kb

input:

1000000000 16
308520246 1 500000000 359755556
295655247 487135002 987135001 271593000
314734892 968055357 1000000000 312883746
410091097 1 500000000 101547816
395764591 485673495 985673494 629609944
392316197 982225101 1000000000 401923300
978742397 1 500000000 868693198
952345206 473602810 97360280...

output:

944232302

result:

ok single line: '944232302'

Test #25:

score: 5
Accepted
time: 36ms
memory: 7848kb

input:

1000000000 16
672706728 1 200000000 497504405
685823406 186883323 386883322 774982231
674014449 375074366 575074365 773000447
654139023 555198940 755198939 790219287
656808645 752529318 952529317 476720223
644457233 940177906 1000000000 664282982
959379929 1 200000000 786969801
978273081 181106849 3...

output:

3404859829

result:

ok single line: '3404859829'

Test #26:

score: 5
Accepted
time: 42ms
memory: 7840kb

input:

1000000000 16
540954071 1 10000000 710172197
540536129 9582059 19582058 536145072
539536499 18582429 28582428 814753471
539185649 28231579 38231578 620882859
538350203 37396133 47396132 386658616
539249992 46496344 56496343 870617207
539643763 56102573 66102572 904970863
539573301 66032111 76032110 ...

output:

-1

result:

ok single line: '-1'

Test #27:

score: 5
Accepted
time: 29ms
memory: 7664kb

input:

1000000000 16
491674089 1 500000000 336648490
539994271 451679820 951679819 469043391
517647080 929332630 1000000000 292857884
281124238 1 500000000 712418479
328708776 452415464 952415463 296084141
356807854 924316387 1000000000 648894560
660900926 1 500000000 384729282
657610483 496709559 99670955...

output:

1886981327

result:

ok single line: '1886981327'

Test #28:

score: 5
Accepted
time: 45ms
memory: 7640kb

input:

1000000000 16
838698042 1 200000000 534015959
858199116 180498928 380498927 504484211
839907744 362207557 562207556 898913833
847053449 555061853 755061852 910907433
860497726 741617577 941617576 171206653
867040700 935074604 1000000000 676192995
208351725 1 200000000 506499124
228113409 180238318 3...

output:

-1

result:

ok single line: '-1'

Test #29:

score: 5
Accepted
time: 53ms
memory: 9772kb

input:

1000000000 16
205846077 1 10000000 873895887
204858740 9012665 19012664 147782763
205674932 18196474 28196473 776792335
205398591 27920134 37920133 18876276
205275591 37797135 47797134 113374737
206002463 47070264 57070263 216570418
205456894 56524696 66524695 508488400
205480940 66500651 76500650 8...

output:

-1

result:

ok single line: '-1'

Test #30:

score: 5
Accepted
time: 34ms
memory: 7576kb

input:

1000000000 16
521719332 635760132 934417526 529743702
1305373 525299245 1000000000 461248301
101171661 237013303 513442486 519226146
461851512 227481783 939390202 642026488
835321835 380826656 1000000000 864581393
774758954 598049287 1000000000 885982602
476039441 1 226851442 609871787
583465229 392...

output:

1071400261

result:

ok single line: '1071400261'

Test #31:

score: 5
Accepted
time: 22ms
memory: 7688kb

input:

1000000000 16
206783888 1 794031651 473137665
654757441 181608545 482154540 814079812
199299059 172003379 589586500 977531496
445754685 647415391 1000000000 724703815
30495945 650569357 1000000000 700408250
370373056 15814055 569148871 97147596
592280811 734763422 1000000000 99025581
523660734 98269...

output:

926766012

result:

ok single line: '926766012'

Test #32:

score: 5
Accepted
time: 23ms
memory: 7668kb

input:

1000000000 16
53129883 43438614 576626916 420027795
595715370 217546351 904088926 117669374
501698138 394506898 1000000000 501348919
16794543 467166832 1000000000 430252715
66170783 44326969 740935026 307666284
100432574 105218928 612739989 964426597
66832107 59260547 587707946 695056263
71803431 40...

output:

1084276058

result:

ok single line: '1084276058'

Test #33:

score: 5
Accepted
time: 25ms
memory: 7636kb

input:

20 16
11 11 20 614196799
18 11 20 106915074
9 20 20 806710174
5 19 20 334176271
12 11 16 63935383
8 1 3 493767973
13 17 20 937825697
16 11 20 599156261
4 6 20 162982558
17 4 20 156235818
12 8 14 967709279
19 11 20 880182565
6 13 18 842507131
19 17 19 30861075
17 1 10 659432307
9 5 15 689432411

output:

815668125

result:

ok single line: '815668125'

Test #34:

score: 5
Accepted
time: 34ms
memory: 7576kb

input:

20 16
14 1 5 36860000
17 3 8 100853922
6 14 16 960259663
20 2 9 15251465
8 17 18 411813150
16 18 20 957718939
17 1 8 346305175
2 20 20 759532534
3 16 20 708800301
12 19 20 571134941
5 4 11 532379718
6 16 20 124294312
20 12 20 89050063
16 13 19 890357065
20 13 20 289577457
15 20 20 126485192

output:

-1

result:

ok single line: '-1'

Test #35:

score: 5
Accepted
time: 43ms
memory: 7576kb

input:

20 16
5 17 20 883046038
2 13 15 646298453
1 16 19 673045363
5 8 9 429038258
5 4 7 675052934
3 9 11 556330641
4 7 11 709314017
2 18 20 666670231
1 3 3 408856853
2 2 6 619870732
2 12 14 948839865
2 10 13 131394079
2 2 2 70988341
3 1 3 17741436
5 14 14 901591370
2 17 19 223748049

output:

-1

result:

ok single line: '-1'

Test #36:

score: 5
Accepted
time: 23ms
memory: 7692kb

input:

20 16
8 17 19 6
11 1 12 19
20 15 20 18
16 13 20 13
12 6 16 9
14 2 19 3
5 10 13 16
7 18 18 20
5 11 20 11
11 7 20 11
13 18 20 15
9 7 16 3
13 1 4 11
5 12 20 2
11 13 16 20
11 14 19 7

output:

19

result:

ok single line: '19'

Test #37:

score: 5
Accepted
time: 40ms
memory: 7668kb

input:

20 16
4 8 12 1
5 3 3 3
3 1 3 2
5 1 3 2
5 20 20 2
5 8 8 2
4 7 11 2
1 8 9 4
1 8 10 5
5 20 20 3
4 12 16 4
5 6 7 3
5 8 8 3
5 15 18 3
1 19 20 5
1 2 2 1

output:

-1

result:

ok single line: '-1'

Subtask #3:

score: 0
Wrong Answer

Dependency #2:

100%
Accepted

Test #38:

score: 0
Wrong Answer
time: 67ms
memory: 274008kb

input:

1000000000 5000
2157 2 343 342
684 999998751 1000000000 684
1022 999998751 1000000000 1022
991 999998751 1000000000 991
2291 999999792 999999999 208
47 1 1250 47
402 999998751 1000000000 402
1688 999999189 999999999 811
987 1 1250 987
1606 999999107 999999999 893
2304 999999805 999999999 195
685 999...

output:

0

result:

wrong answer 1st lines differ - expected: '2499', found: '0'

Subtask #4:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

0%