QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#878093#9634. 序列Grain_Depot080 2927ms56596kbC++232.3kb2025-02-01 13:30:312025-02-01 13:30:41

Judging History

This is the latest submission verdict.

  • [2025-02-01 13:30:41]
  • Judged
  • Verdict: 0
  • Time: 2927ms
  • Memory: 56596kb
  • [2025-02-01 13:30:31]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define N 500005
typedef long long ll;
int n,m,a[N];
struct seg{
    int l,r;
    ll mx,sum,ans,t1,t2;
}s[N<<2];
#define ls (u<<1)
#define rs (u<<1|1)
ll query(int u,ll x){
    if(s[u].l==s[u].r)return max(x,s[u].mx);
    if(s[ls].mx>x)return query(ls,x)+s[u].sum-s[ls].sum;
    return x*(s[ls].r-s[ls].l+1)+query(rs,x);
}
void pushup(int u){
    s[u].mx=max(s[ls].mx,s[rs].mx);
    s[u].ans=s[ls].ans+s[rs].ans;
    s[u].sum=s[ls].sum+query(rs,s[ls].mx);
}
void put(int u,ll k){s[u].ans+=k*(s[u].r-s[u].l+1);s[u].t1+=k;}
void put(int u,ll t,ll k){
    if(s[u].l==s[u].r){s[u].ans+=max(s[u].mx,k)*t;return;}
    if(s[ls].mx>k){
        s[u].ans+=(query(ls,k)+s[u].sum-s[rs].sum)*t;
        put(ls,t,k);
        s[rs].t2+=t;
        s[rs].ans+=(s[u].sum-s[ls].sum)*t;
    }else{
        s[u].ans+=((s[ls].r-s[ls].l+1)*k+query(rs,k))*t;
        put(ls,k*t);
        put(rs,t,k);
    }
}
void pushdown(int u){
    put(ls,s[u].t1);put(rs,s[u].t1);
    if(s[u].t2){
        put(ls,s[u].t2,s[u^1].mx);
        put(rs,s[u].t2,max(s[ls].mx,s[u^1].mx));
    }
    s[u].t1=s[u].t2=0;
}
void build(int u,int l,int r){
    s[u].l=l;s[u].r=r;if(l==r){s[u].mx=s[u].sum=a[l];return;}
    int mid=(l+r)>>1;build(ls,l,mid);build(rs,mid+1,r);pushup(u);
}
ll qry(int u,int l,int r){
    if(s[u].l>r||s[u].r<l)return 0;
    if(s[u].l>=l&&s[u].r<=r)return s[u].mx;
    pushdown(u);return max(qry(ls,l,r),qry(rs,l,r));
}
ll query(int u,int l,int r){
    if(s[u].l>r||s[u].r<l)return 0;
    if(s[u].l>=l&&s[u].r<=r)return s[u].ans;
    pushdown(u);return query(ls,l,r)+query(rs,l,r);
}
void update(int u,int x,ll k){
    if(s[u].l==s[u].r){s[u].mx=s[u].sum=k;return;}
    pushdown(u);x<=s[ls].r?update(ls,x,k):update(rs,x,k);pushup(u);
}
void update(int u,int l,int r,ll k){
    if(s[u].l>r||s[u].r<l)return;
    if(s[u].l>=l&&s[u].r<=r){put(u,1,k);return;}
    pushdown(u);update(ls,l,r,k);update(rs,l,r,max(k,qry(ls,l,r)));pushup(u);
}
int main(){
    int opt,x,y;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)scanf("%d",&a[i]);
    build(1,1,n);
    for(int i=1;i<=m;++i){
        scanf("%d%d%d",&opt,&x,&y);
        if(opt==1)update(1,x,y);
        else if(opt==2)update(1,x,y,0);
        else printf("%lld\n",query(1,x,y));
    }
    return 0;
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 5964kb

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
48066137086
60630530391
355185691937
934933136756
208925010382
847980884052
1167703497071
2614455192555
2139892298705
2473150277112
2294152474330
4169473410490
1478935289863
62968981524
4439111876471
5320371475937
537336917489
6062647961283
6427618519393
4594350232879
4091...

result:

wrong answer 4th lines differ - expected: '47168872319', found: '48066137086'

Subtask #2:

score: 0
Wrong Answer

Test #6:

score: 0
Wrong Answer
time: 309ms
memory: 19356kb

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
30761429698243
23300665740629
41869264828534
88350980012374
55152828870546
133751687289546
122496078687961
51489517349283
118529565656237
11037534475440
65064735485353
10631707666710
199295466327940
265970122884274
214593732822128
204114204605426
309375947066372
371684771495716
431236832403141
223...

result:

wrong answer 2nd lines differ - expected: '30726293751614', found: '30761429698243'

Subtask #3:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 756ms
memory: 30868kb

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:

124826687722094
163130777720324
21829962212270
97334368958719
143486870855835
101480869188769
11850432340486
170312451245650
446910983205270
157065628120119
993202568601925
2459784243144
91135448452333
229258225020388
930093568028972
338428792618924
610012601653472
527506502700423
385430052273011
16...

result:

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

Subtask #4:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 1654ms
memory: 56516kb

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
102577436286190
17544481135009
57439486417031
799305097882
80069297853646
0
95523713893196
71074412434242
23173381046894
87975967009214
10638073471473
102266335988321
110151483816121
16148646168865
83086323835157
108283925620298
2176307144468
95529130809418
25755120368721
1905334045112
133...

result:

wrong answer 6th lines differ - expected: '105147493356021', found: '102577436286190'

Subtask #5:

score: 0
Time Limit Exceeded

Test #19:

score: 0
Time Limit Exceeded

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:

100436748324143
193348375499595
350280906291754
1358614963320044
1096656756650540
478469607369321
1031484875669220
1402766529052809
1127339302330156
842991673766832
3898333794137758
4498506396667582
481047430623853
1264841742134609
2062251910514351
7754357559161327
5584547282643055
1189394818151223
...

result:


Subtask #6:

score: 0
Wrong Answer

Test #23:

score: 0
Wrong Answer
time: 2927ms
memory: 56596kb

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
45917449344495
156823181831011
274914670019553
359923929123344
267299883054791
263117929178345
311069343633482
450392628631895
38858248454304
593433390769057
3794563307033
13544408774788
652667899681738
8507623210858
175288833762529
103554036492069
0
747059214335787
180713640913740
3385564683721...

result:

wrong answer 3rd lines differ - expected: '46530827437710', found: '45917449344495'