QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#876742#9634. 序列NineSuns0 1269ms58428kbC++142.8kb2025-01-31 12:15:522025-01-31 12:16:18

Judging History

This is the latest submission verdict.

  • [2025-01-31 12:16:18]
  • Judged
  • Verdict: 0
  • Time: 1269ms
  • Memory: 58428kb
  • [2025-01-31 12:15:52]
  • 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; }
void uadd (int p, ll k) {
    v[p].ad += k; v[p].sb += (v[p].r-v[p].l+1)*k; 
}
void usv (int p, ll k) {
    v[p].dx += k;
    v[p].sb += (v[p>>1].sa-v[p^1].sa)*k;
} 
void 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, void(); 
    if (dm > v[p<<1].mx) uadd(p<<1, dm*dx), ads(p<<1|1, dm, dx); 
    else ads(p<<1, dm, dx), usv(p<<1|1, dx); 
    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; 
}

详细

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 5740kb

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
912519727002
208925010382
743313275724
797943496023
1920904686372
1593185337908
1788288319646
1678936761722
2978855836237
796330155325
34979027980
2384800670860
2938935769975
334750417012
3832827565102
3918663618557
2936353162464
299769...

result:

wrong answer 7th lines differ - expected: '918484726470', found: '912519727002'

Subtask #2:

score: 0
Wrong Answer

Test #6:

score: 0
Wrong Answer
time: 115ms
memory: 19012kb

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
48896083791431
125699172980982
116230521750129
51466277782595
107634839044085
11037534475440
57318253782166
8366825364943
122650648750874
177772421077582
135508537795107
134353875236148
224898519583280
263365580942259
316977850993880
1591...

result:

wrong answer 6th lines differ - expected: '55145178872681', found: '48896083791431'

Subtask #3:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 265ms
memory: 30624kb

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:

122523635227341
137494373192832
21829962212270
94055379499279
117850747877043
96929945305198
11850432340486
152537359999578
314913690060069
142470677163860
636971405369137
2459784243144
66189438928766
203750480953183
603168650092575
227449320986994
452648504277674
417042504080201
255115769481298
160...

result:

wrong answer 1st lines differ - expected: '124830885330445', found: '122523635227341'

Subtask #4:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 669ms
memory: 58428kb

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: 1269ms
memory: 56360kb

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:

83729968533764
186034173755302
275029331163287
1053060765013659
804019796979361
438766540070303
966940138260988
1150877604710468
1112595736107371
723642589228549
2866079930392544
3303504143160577
376817644403969
815230072839445
1945349991393861
6298997411772516
4502415290044691
871862992477522
78023...

result:

wrong answer 1st lines differ - expected: '103621325428465', found: '83729968533764'

Subtask #6:

score: 0
Wrong Answer

Test #23:

score: 0
Wrong Answer
time: 932ms
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
142681163859024
261573058717749
352682039207960
270515121922085
273418740230876
314163853033674
445256667096390
39902282964668
527411354913184
3945842783692
13545278446404
577514299831042
8530858264040
150818503147679
103795597112962
0
620343980776954
149188293968566
3188343059349...

result:

wrong answer 4th lines differ - expected: '159760134281336', found: '142681163859024'