Loading...
Submission
# When Author Problem Language CPU Memory
4317 2022-02-18 20:42:53 ewu_ieee21_user_34 Range Equal Query C++ 17 1121 ms 3592 kb Time Limit Exceeded - 9
Test Cases
# CPU Memory Points
1 3 ms 3476 kb 1 Accepted
2 4 ms 3480 kb 1 Accepted
3 3 ms 3484 kb 1 Accepted
4 9 ms 3472 kb 1 Accepted
5 9 ms 3548 kb 1 Accepted
6 7 ms 3432 kb 1 Accepted
7 7 ms 3592 kb 1 Accepted
8 8 ms 3516 kb 1 Accepted
9 1121 ms 668 kb 0 Time Limit Exceeded
10 0 ms 0 kb 0 Skipped
11 0 ms 0 kb 0 Skipped
12 0 ms 0 kb 0 Skipped
13 0 ms 0 kb 0 Skipped
14 0 ms 0 kb 0 Skipped
15 0 ms 0 kb 0 Skipped
16 0 ms 0 kb 0 Skipped
17 0 ms 0 kb 0 Skipped
18 0 ms 0 kb 0 Skipped
19 0 ms 0 kb 0 Skipped
20 0 ms 0 kb 0 Skipped
Source Code
  1. #include<bits/stdc++.h>
  2. #include<ext/pb_ds/assoc_container.hpp>
  3. #include<ext/pb_ds/tree_policy.hpp>
  4. using namespace std;
  5. using namespace __gnu_pbds;
  6.  
  7. template <typename num_t>
  8. using ordered_set = tree<num_t,null_type,less<num_t>,rb_tree_tag,tree_order_statistics_node_update>;
  9.  
  10. const int DEBUGGER = 0;
  11.  
  12. #define io ios_base::sync_with_stdio(0); cin.tie(NULL)
  13. #define mset(a,v) memset(a,v,sizeof(a))
  14. #define lp(i,a,n) for(int i=a;i<n;i++)
  15. #define lpr(i,a,n) for(int i=n-1;i>=a;i--)
  16. #define stlp(it,stl) for(__typeof(stl.begin()) it=stl.begin();it!=stl.end();it++)
  17. #define stlpr(it,stl) for(__typeof(stl.rbegin()) it=stl.rbegin();it!=stl.rend();it++)
  18. #define r(a) a.begin(),a.end()
  19. #define II ({ ll TEMP; cin>>TEMP; TEMP; })
  20. #define SI ({ string TEMP; cin>>TEMP; TEMP; })
  21. #define AI(a) ({ int n=sizeof(a)/sizeof(a[0]); lp(I,0,n)a[I]=II; })
  22. #define AO(a) ({ int n=sizeof(a)/sizeof(a[0]); lp(I,0,n){cout<<(I?" ":"")<<a[I];} if(DEBUGGER)cout<<endl;else cout<<'\n'; })
  23. #define VI(v) ({ lp(I,0,v.size())v[I]=II; })
  24. #define VO(v) ({ if(DEBUGGER)cout<<#v<<": ";lp(I,0,v.size()){cout<<(I?" ":"")<<v[I];} if(DEBUGGER)cout<<endl;else cout<<'\n'; })
  25. #define outa(a) ({ if(DEBUGGER)dbg(a); else cout<<a<<'\n'; })
  26. #define dbg(a) ({ if(DEBUGGER)cout<<#a<<" = "<<a<<endl; })
  27. #define cbit(n,p) ((n)&(1LL<<(p)))
  28. #define sbit(n,p) ((n)|(1LL<<(p)))
  29. #define tbit(n,p) ((n)^(1LL<<(p)))
  30. #define F first
  31. #define S second
  32.  
  33. typedef long long ll;
  34. typedef pair<ll,ll> pll;
  35. typedef vector<ll> vl;
  36.  
  37. const ll MAX = 1e5+5;
  38. const ll INF = 9e18;
  39. const double PI = 3.141592653589793238462;
  40.  
  41. const int hc = 2;
  42. const ll MOD[5] = {(ll)1e9+7,(ll)1e9+9,(ll)1e9+21,(ll)1e9+33,(ll)1e9+87};
  43. const ll pr[5]={1000003,1000033,1000037,1000039,1000081};
  44.  
  45. ll n,m;
  46. vl a,b;
  47. pll trN[4*MAX];
  48.  
  49. ll bigMOD(ll a,ll x,ll MOD){
  50. if(x==0)return 1;
  51. if(x==1 || a<=1)return a%MOD;
  52. ll r=bigMOD(a,x/2,MOD);
  53. r=(r*r)%MOD;
  54. if(x&1)
  55. r=(r*a)%MOD;
  56. return r;
  57. }
  58.  
  59. pll hashval(vl v){
  60. pll ans;
  61. ll p_pow[2]={1,1};
  62. lp(i,0,v.size()){
  63. ans.F=(ans.F+v[i]*p_pow[0])%MOD[0];
  64. p_pow[0]=(p_pow[0]*pr[0])%MOD[0];
  65.  
  66. ans.S=(ans.S+v[i]*p_pow[1])%MOD[1];
  67. p_pow[1]=(p_pow[1]*pr[1])%MOD[1];
  68. }
  69. return ans;
  70. }
  71.  
  72. void combine(auto &trP,auto &trL,auto &trR,int l,int r,int m){
  73. ll val=trR.F*bigMOD(pr[0],m-l+1,MOD[0]);
  74. val%=MOD[0];
  75. val=(val+trL.F)%MOD[0];
  76. trP.F=val;
  77.  
  78. val=trR.S*bigMOD(pr[1],m-l+1,MOD[1]);
  79. val%=MOD[1];
  80. val=(val+trL.S)%MOD[1];
  81. trP.S=val;
  82. }
  83.  
  84. void init(int n,int l,int r){
  85. if(l==r){
  86. trN[n]={a[l],a[l]};
  87. return;
  88. }
  89. int m=(l+r)/2;
  90. init(2*n,l,m);
  91. init(2*n+1,m+1,r);
  92.  
  93. combine(trN[n],trN[2*n],trN[2*n+1],l,r,m);
  94. }
  95.  
  96. void update(int n,int l,int r,int i,ll val){
  97. if(i<l || r<i)return;
  98. if(i<=l && r<=i){
  99. a[i]=val;
  100. trN[n]={a[l],a[l]};
  101. return;
  102. }
  103. int m=(l+r)/2;
  104. update(2*n,l,m,i,val);
  105. update(2*n+1,m+1,r,i,val);
  106.  
  107. combine(trN[n],trN[2*n],trN[2*n+1],l,r,m);
  108. }
  109.  
  110. pll query(int n,int l,int r,int i,int j){
  111. if(j<l || r<i) return {0,0};
  112. if(i<=l && r<=j) return trN[n];
  113. int m=(l+r)/2;
  114.  
  115. if(j<m+1)
  116. return query(2*n,l,m,i,j);
  117. if(m<i)
  118. return query(2*n+1,m+1,r,i,j);
  119.  
  120. pll trQL=query(2*n,l,m,i,j);
  121. pll trQR=query(2*n+1,m+1,r,i,j);
  122. pll trP;
  123. combine(trP,trQL,trQR,max(i,l),min(r,j),m);
  124. return trP;
  125. }
  126.  
  127.  
  128. void solve(){
  129. n=II,m=II;
  130. lp(i,0,n)a.push_back(II);
  131. lp(i,0,m)b.push_back(II);
  132. pll bhash=hashval(b);
  133.  
  134. init(1,0,n-1);
  135.  
  136. ll q=II;
  137. while(q--){
  138. if(II==1){
  139. ll i=II-1,x=II;
  140. update(1,0,n-1,i,x);
  141. }
  142. else{
  143. ll l=II-1,r=II-1;
  144. pll ahash=query(1,0,n-1,l,r);
  145. if(ahash==bhash) outa("YES");
  146. else outa("NO");
  147. }
  148. }
  149. }
  150.  
  151. int main(void){
  152. io;
  153. int multipletest=0;
  154. if(multipletest){
  155. int tc;
  156. cin>>tc;
  157. while(tc--)
  158. solve();
  159. }
  160. else
  161. solve();
  162. return 0;
  163. }
  164.