提出 #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 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |