QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#876749#9634. 序列NineSuns0 1129ms56488kbC++143.0kb2025-01-31 12:22:532025-01-31 12:22:53

Judging History

This is the latest submission verdict.

  • [2025-01-31 12:22:53]
  • Judged
  • Verdict: 0
  • Time: 1129ms
  • Memory: 56488kb
  • [2025-01-31 12:22:53]
  • Submitted

answer

#include <bits/stdc++.h>
#define ll long long

using namespace std;
const int N = 5e5+5; 
int n, m, a[N]; 

struct node {
    int l, r; 
    ll sa, mx, sb, ad, dx; 
}v[N*4]; 
ll gets (int p, ll k) {
    if (v[p].l == v[p].r) return max(k, v[p].mx); 
    if (k >= v[p<<1].mx) return k*(v[p<<1].r-v[p<<1].l+1)+gets(p<<1|1, k); 
    return gets(p<<1, k)+v[p].sa-v[p<<1].sa; 
}
inline void pa (int p) {
    v[p].sa = v[p<<1].sa+gets(p<<1|1, v[p<<1].mx);
    v[p].mx = max(v[p<<1].mx, v[p<<1|1].mx);  
}
inline void pb (int p) { v[p].sb = v[p<<1].sb+v[p<<1|1].sb; }
ll uadd (int p, ll k) {
    v[p].ad += k; v[p].sb += (v[p].r-v[p].l+1)*k; 
    return (v[p].r-v[p].l+1)*k; 
}
ll usv (int p, ll k) {
    v[p].dx += k;
    v[p].sb += (v[p>>1].sa-v[p^1].sa)*k;
    return (v[p>>1].sa-v[p^1].sa)*k; 
} 
ll ads (int p, ll dm, ll dx) {
    // cout << p << " " << dm << " " << dx << " " << v[p].l << " " << v[p].r << " " << v[p].mx << endl; 
    if (v[p].l == v[p].r) return v[p].sb += max(dm, v[p].mx)*dx, max(dm, v[p].mx)*dx; 
    ll res = 0; 
    if (dm > v[p<<1].mx) res = uadd(p<<1, dm*dx)+ads(p<<1|1, dm, dx); 
    else res = ads(p<<1, dm, dx)+usv(p<<1|1, dx); 
    return v[p].sb += res, res; 
    // pb(p); 
}
inline void push_down (int p) {
    if (v[p].ad) uadd(p<<1, v[p].ad), uadd(p<<1|1, v[p].ad), v[p].ad = 0; 
    if (!v[p].dx) return; 
    if (v[p^1].mx > v[p<<1].mx) uadd(p<<1, v[p^1].mx*v[p].dx), ads(p<<1|1, v[p^1].mx, v[p].dx); 
    else ads(p<<1, v[p^1].mx, v[p].dx), usv(p<<1|1, v[p].dx); 
    v[p].dx = 0; 
}
ll qsum (int p, int l, int r, int tl, int tr) {
    if (tl <= l && r <= tr) return v[p].sb; 
    int mid = l+r>>1; ll res = 0; push_down(p); 
    if (tl <= mid) res += qsum(p<<1, l, mid, tl, tr); 
    if (tr > mid) res += qsum(p<<1|1, mid+1, r, tl, tr); 
    return res; 
}
void add (int p, int l, int r, int tl, int tr, ll &mx) {
    if (tl <= l && r <= tr) return ads(p, mx, 1), mx = max(v[p].mx, mx), void(); 
    int mid = l+r>>1; push_down(p); 
    if (tl <= mid) add(p<<1, l, mid, tl, tr, mx); 
    if (tr > mid) add(p<<1|1, mid+1, r, tl, tr, mx); 
    pb(p); 
}
void mdy (int p, int l, int r, int id, int k) {
    if (l == r) return v[p].sa = v[p].mx = k, void(); 
    int mid = l+r>>1; push_down(p); 
    id <= mid ? mdy(p<<1, l, mid, id, k) : mdy(p<<1|1, mid+1, r, id, k); 
    pa(p); 
}
void build (int p, int l, int r) {
    v[p].l = l; v[p].r = r; 
    if (l == r) return v[p].sa = v[p].mx = a[l], void(); 
    int mid = l+r>>1; 
    build(p<<1, l, mid); build(p<<1|1, mid+1, r); 
    pa(p); 
}

int main () {
    ios::sync_with_stdio(0); 
    cin.tie(0); cout.tie(0);
    cin >> n >> m; 
    for (int i = 1;i <= n;i++) cin >> a[i]; 
    build(1, 1, n); 
    while (m--) {
        int o, l, r; 
        cin >> o >> l >> r; 
        if (o == 1) mdy(1, 1, n, l, r); 
        if (o == 2) {
            ll mx = 0; 
            add(1, 1, n, l, r, mx); 
        }
        if (o == 3) cout << qsum(1, 1, n, l, r) << "\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: 1ms
memory: 5732kb

input:

1000 1000
200255705 18851142 736009342 406246331 351992319 749189355 944184790 785599293 530084396 616825582 73892135 176401717 973078957 225462579 140426746 324124972 229974996 750749128 879242920 854856469 515750108 662437499 10800517 96488944 534239216 379225718 1241451 150390174 183892560 613018...

output:

115323323048
65823230682
0
47168872319
60782985614
348599053983
918484726470
208925010382
841530027736
1163442457471
2608439690799
2128414546126
2471685184070
2278023608377
4122371223088
1458343349705
62968981524
4425943072510
5286986186209
537921635417
6006016656637
6374912810574
4556755081981
4090...

result:

wrong answer 51st lines differ - expected: '4208364565647', found: '4208135933842'

Subtask #2:

score: 0
Wrong Answer

Test #6:

score: 0
Wrong Answer
time: 111ms
memory: 19296kb

input:

100000 100000
4637 12023 22485 24887 33065 35780 37538 49402 71281 72891 82706 82752 91276 108256 240372831 135259 144119 527163065 139510686 183411 214260 269767144 246850 265137 200716505 279533 283217 309516 310867 466875375 322790 328304 352577 362081 368658 370430 393854 410075 413844 417924 42...

output:

0
30726293751614
23279151095632
41852587040702
88334302224542
55145178872681
133708315362378
122479400900129
51466277782595
118512887868405
11037534475440
65035924904178
10603452209550
199208093593954
265893836606312
214479670680947
204140164589562
309440794035363
371664753856955
431192829952188
223...

result:

wrong answer 173rd lines differ - expected: '2774082456582436', found: '2774082649407076'

Subtask #3:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 266ms
memory: 31016kb

input:

199996 199998
5015 394604305 13416 39971157 16609 21608 24264 407389425 31670 31976 33151 38949 39093 43561 45026 52355 53865 59168 62183 64166 66110 67179 69567 78899 10409535 393971884 104797 109461 109501 114704 118658 123559 123907 130465 131312 140968 144801 146183 157067 160370 796894425 17818...

output:

124830885330445
163133190457804
21829962212270
97332810213576
143489565142015
101516391700168
11850432340486
170205236804236
447031192227296
157109166149152
992595580711424
2459784243144
90627247023452
229326680354895
929560394107059
338204574812304
609780011775761
527358703064443
385256587900185
16...

result:

wrong answer 552nd lines differ - expected: '5406007243781548', found: '5406007650980776'

Subtask #4:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 628ms
memory: 56372kb

input:

499996 499997
1 2646 3802 4717 7652 9462 10048 15736 15959 17076 21684 21628 25147 26990 26023 28835 33604 34213 36006 39643 38238 40133 45193 44699 47403 48437 51742 53992 57055 56322 61353 61812 62008 67837 66136 70512 72503 72294 75169 77534 81608 80173 85831 85776 87518 89661 93233 93800 96640 9...

output:

0
0
0
0
0
105147493356021
18039314547119
60123011205734
797041402206
80680889110877
0
97607273260486
71194267494796
23670063883525
92041637115786
11373629471803
104829243846562
112256838369147
16646163554581
83634910857933
110480671764271
2174900945295
97605316257427
25997394270292
1924389041448
137...

result:

wrong answer 3000th lines differ - expected: '3875992792621935', found: '3875992792735295'

Subtask #5:

score: 0
Wrong Answer

Test #19:

score: 0
Wrong Answer
time: 1129ms
memory: 56488kb

input:

499999 499997
1 913 5858 7110 8076 9893 13142 12135 14769 16455 20711 22647 22330 25867 26677 28695 32280 33608 34824 39255 40515 43887 42090 46155 49082 48316 50861 55535 54485 56506 59203 61928 62076 66600 68030 69805 72680 74796 75455 79690 78235 83297 82398 85367 87069 89711 93646 92554 95923 97...

output:

103621325428465
194930859933753
353758078534853
1405031453939581
1104512586294893
480139615473767
1033865068621131
1418492876310288
1129269195811974
845644688375455
3918331221480338
4521399133967034
482692294649644
1270881159480750
2064526258912334
7779855812924988
5610050149593744
1191164601160151
...

result:

wrong answer 12671st lines differ - expected: '9252676369918254289', found: '-9194067703791297327'

Subtask #6:

score: 0
Wrong Answer

Test #23:

score: 0
Wrong Answer
time: 865ms
memory: 56372kb

input:

500000 499997
811 680 2664 6777 6210 8794 10852 13568 17252 18119 19538 22423 23434 24510 27591 29645 31329 33806 37129 37447 40339 41361 45606 47813 47448 50532 50029 53543 54938 56738 59038 63199 62439 67323 68737 71432 71039 75469 76122 79648 80334 81276 84567 85506 89609 91503 91445 94036 97338 ...

output:

0
0
46530827437710
159760134281336
281467808921043
372576789411254
270515121922085
273418740230876
314163853033674
465151417299684
39902282964668
608644183868574
3945842783692
13545278446404
658747128786432
8688035320113
175738882065799
103795597112962
0
751662464688101
182137815371386
3400806326455...

result:

wrong answer 435th lines differ - expected: '3329796271696981', found: '3329796271694475'