Submission #74886991
Source Code Expand
#include<bits/stdc++.h>
// #define XAERIC666
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
#ifndef XAERIC666
#define xaeric(...) {fprintf(stderr,__VA_ARGS__);fflush(stderr);}
#else
#define xaeric(...) 114514
#endif
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||'9'<c){if(c=='-')f=-1;c=getchar();}
while('0'<=c&&c<='9'){x=x*10+c-48;c=getchar();}
return x*f;
}
// void in(int*a,int n){for(int i=1;i<=n;i++)a[i]=read();}
// void out(int*a,int n){for(int i=1;i<=n;i++)printf("%lld%c",a[i]," \n"[i==n]);}
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define _rep(i,a,b) for(int i=(b);i>=(a);--i)
#define YES puts("YES");
#define NO puts("NO");
void chmax(auto&a,auto b){if(a<b)a=b;}
void chmin(auto&a,auto b){if(a<b)a=b;}
using namespace std;
const int P=998244353;
const int N=2e5+5,D=25*N;
int n,m,a[N],t[D],tot,ls[D],rs[D],rt[N];
int bld(int cl,int cr){
int u=++tot;
if(cl>=cr){
t[u]=a[cl];
return u;
}
int mid=(cl+cr)/2;
ls[u]=bld(cl,mid);
rs[u]=bld(mid+1,cr);
return u;
}
int cln(int u){
++tot;
t[tot]=t[u];
ls[tot]=ls[u];
rs[tot]=rs[u];
return tot;
}
int chg(int u,int cl,int cr,int p,int x){
u=cln(u);
if(cl>=cr){
t[u]=x;
return u;
}
int mid=(cl+cr)/2;
if(p<=mid){
ls[u]=chg(ls[u],cl,mid,p,x);
}
else{
rs[u]=chg(rs[u],mid+1,cr,p,x);
}
t[u]=t[ls[u]]+t[rs[u]];
return u;
}
// int qry(int u,int cl,int cr,int p){
// if(cl>=cr){
// return t[u];
// }
// int mid=(cl+cr)/2;
// if(p<=mid){
// return qry(ls[u],cl,mid,p);
// }
// return qry(rs[u],mid+1,cr,p);
// }
int qry(int u,int cl,int cr,int l,int r){
if(l<=cl&&cr<=r){
return t[u];
}
if(cr<l||r<cl){
return 0;
}
int mid=(cl+cr)/2;
return qry(ls[u],cl,mid,l,r)+qry(rs[u],mid+1,cr,l,r);
}
int q,cur[N];
void solve(){
n=read(),m=read(),q=read();
rt[0]=bld(1,m);
for(int i=1;i<=n;i++){
cur[i]=rt[0];
}
for(int i=1;i<=q;i++){
int op=read();
if(op==1){
int x=read(),y=read();
cur[x]=cur[y];
}
else if(op==2){
int x=read(),y=read(),z=read();
cur[x]=chg(cur[x],1,m,y,z);
}
else{
int x=read(),l=read(),r=read();
printf("%lld\n",qry(cur[x],1,m,l,r));
}
}
}
signed main(){
int TTTT=1;
// int TTTT=read();
while(TTTT--){
solve();
}
}
Submission Info
| Submission Time |
|
| Task |
G - Copy Query |
| User |
Xaeric |
| Language |
C++23 (GCC 15.2.0) |
| Score |
600 |
| Code Size |
2453 Byte |
| Status |
AC |
| Exec Time |
141 ms |
| Memory |
102396 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
600 / 600 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample_01.txt |
| All |
evil_01.txt, evil_02.txt, evil_03.txt, evil_04.txt, evil_05.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt |
| Case Name |
Status |
Exec Time |
Memory |
| evil_01.txt |
AC |
100 ms |
61416 KiB |
| evil_02.txt |
AC |
103 ms |
61668 KiB |
| evil_03.txt |
AC |
116 ms |
62252 KiB |
| evil_04.txt |
AC |
118 ms |
64692 KiB |
| evil_05.txt |
AC |
141 ms |
73028 KiB |
| sample_01.txt |
AC |
1 ms |
3736 KiB |
| test_01.txt |
AC |
1 ms |
3516 KiB |
| test_02.txt |
AC |
1 ms |
3592 KiB |
| test_03.txt |
AC |
1 ms |
3736 KiB |
| test_04.txt |
AC |
15 ms |
5440 KiB |
| test_05.txt |
AC |
25 ms |
12332 KiB |
| test_06.txt |
AC |
25 ms |
12204 KiB |
| test_07.txt |
AC |
37 ms |
19288 KiB |
| test_08.txt |
AC |
37 ms |
19360 KiB |
| test_09.txt |
AC |
54 ms |
26668 KiB |
| test_10.txt |
AC |
52 ms |
26560 KiB |
| test_11.txt |
AC |
95 ms |
43992 KiB |
| test_12.txt |
AC |
91 ms |
43992 KiB |
| test_13.txt |
AC |
93 ms |
44084 KiB |
| test_14.txt |
AC |
72 ms |
34208 KiB |
| test_15.txt |
AC |
82 ms |
39292 KiB |
| test_16.txt |
AC |
73 ms |
102396 KiB |
| test_17.txt |
AC |
98 ms |
58520 KiB |
| test_18.txt |
AC |
99 ms |
42964 KiB |
| test_19.txt |
AC |
76 ms |
43160 KiB |
| test_20.txt |
AC |
94 ms |
58376 KiB |