提出 #34241643


ソースコード 拡げる

#include<bits/stdc++.h>
#define F() for(int i=0;i<3;++i)for(int j=0;j<3;++j)if(i!=j)
using namespace std;int read(){int num=0,f=1;char c;while(!isdigit(c=getchar()))if(c=='-')f=-1;while(isdigit(c))num=num*10+(c&15),c=getchar();return num*f;}const int N=100010;struct tr{int a[3];long long w[3][3];int&operator[](int x){return a[x];}void clean(){memset(a,0,sizeof(a)),memset(w,0,sizeof(w));}void output(){for(int i=0;i<3;++i)printf("%d%c",a[i]," \n"[i==2]);F()printf("%lld%c",w[i][j]," \n"[j==(i==2?1:2)]);}}w[N<<2],g;tr operator+(tr x,tr y){tr z;z.clean();for(int i=0;i<3;++i)z[i]=x[i]+y[i];F()z.w[i][j]=x.w[i][j]+y.w[i][j]+1ll*x[i]*y[j];return z;}tr trans(tr x,int*y){tr z;z.clean();for(int i=0;i<3;++i)z[y[i]]+=x[i];F()z.w[y[i]][y[j]]+=x.w[i][j];return z;}int n,m,q,st[3],v[N<<2][3],op,l,r;void trans(int k,int*x){for(int i=0;i<3;++i)v[k][i]=x[v[k][i]];w[k]=trans(w[k],x);}void pushup(int k){w[k]=w[k<<1]+w[k<<1|1];}void clean(int k){for(int i=0;i<3;++i)v[k][i]=i;}void pushdown(int k){trans(k<<1,v[k]),trans(k<<1|1,v[k]),clean(k);}void build(int k,int l,int r){clean(k);if(l==r)w[k].clean(),++w[k][read()];else{int mid=(l+r)>>1;build(k<<1,l,mid),build(k<<1|1,mid+1,r),pushup(k);}}void upd(int k,int l,int r,int L,int R,int*T){if(L<=l&&r<=R)trans(k,T);else{int mid=(l+r)>>1;pushdown(k);if(L<=mid)upd(k<<1,l,mid,L,R,T);if(mid<R)upd(k<<1|1,mid+1,r,L,R,T);pushup(k);}}void qry(int k,int l,int r,int L,int R){if(L<=l&&r<=R)g=g+w[k];else{int mid=(l+r)>>1;pushdown(k);if(L<=mid)qry(k<<1,l,mid,L,R);if(mid<R)qry(k<<1|1,mid+1,r,L,R);}}void Solve_Test(){for(n=read(),q=read(),build(1,1,n);q--;){op=read(),l=read(),r=read();if(op==1)g.clean(),qry(1,1,n,l,r),printf("%lld\n",g.w[2][1]+g.w[2][0]+g.w[1][0]);else{for(int i=0;i<3;++i)st[i]=read();upd(1,1,n,l,r,st);}}}int main(){Solve_Test();return 0;}

提出情報

提出日時
問題 G - 012 Inversion
ユーザ Treap
言語 C++ (GCC 9.2.1)
得点 600
コード長 1792 Byte
結果 AC
実行時間 308 ms
メモリ 29356 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 600 / 600
結果
AC × 2
AC × 22
セット名 テストケース
Sample sample_01.txt, sample_02.txt
All random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, sample_01.txt, sample_02.txt
ケース名 結果 実行時間 メモリ
random_01.txt AC 307 ms 29356 KiB
random_02.txt AC 114 ms 29228 KiB
random_03.txt AC 283 ms 29032 KiB
random_04.txt AC 219 ms 29132 KiB
random_05.txt AC 269 ms 29156 KiB
random_06.txt AC 135 ms 6680 KiB
random_07.txt AC 308 ms 29296 KiB
random_08.txt AC 49 ms 10008 KiB
random_09.txt AC 285 ms 29144 KiB
random_10.txt AC 206 ms 29128 KiB
random_11.txt AC 269 ms 29208 KiB
random_12.txt AC 64 ms 16488 KiB
random_13.txt AC 259 ms 29028 KiB
random_14.txt AC 17 ms 3612 KiB
random_15.txt AC 29 ms 29136 KiB
random_16.txt AC 2 ms 3616 KiB
random_17.txt AC 240 ms 29192 KiB
random_18.txt AC 237 ms 29292 KiB
random_19.txt AC 236 ms 29296 KiB
random_20.txt AC 237 ms 29208 KiB
sample_01.txt AC 3 ms 3596 KiB
sample_02.txt AC 2 ms 3612 KiB