QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#878093 | #9634. 序列 | Grain_Depot08 | 0 | 2927ms | 56596kb | C++23 | 2.3kb | 2025-02-01 13:30:31 | 2025-02-01 13:30:41 |
Judging History
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'