Loading...
Submission
# When Author Problem Language CPU Memory
3628 2021-12-22 01:10:00 ewu_ieee21_user_34 Range Equal Query C++ 11 18 ms 3652 kb Wrong Answer - 4
Test Cases
# CPU Memory Points
1 2 ms 3564 kb 1 Accepted
2 3 ms 3520 kb 1 Accepted
3 3 ms 3488 kb 1 Accepted
4 18 ms 3652 kb 0 Wrong Answer
5 0 ms 0 kb 0 Skipped
6 0 ms 0 kb 0 Skipped
7 0 ms 0 kb 0 Skipped
8 0 ms 0 kb 0 Skipped
9 0 ms 0 kb 0 Skipped
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) ({ 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 pair<pll,ll> ppll;
  36. typedef vector<ll> vl;
  37.  
  38. const int hc = 3;
  39. const ll MAX = 1e5+5;
  40. const ll MOD[hc] = {(ll)1e9+7,(ll)1e9+9,(ll)1e9+21};
  41. const ll INF = 9e18;
  42. const double PI = 3.141592653589793238462;
  43.  
  44. ll ps[hc][320],pr[hc]={110017,110023,110039};
  45. ll n,m,len;
  46. ll blc[hc][320],blc2[hc][320];
  47. vl a,b,blcvl[320];
  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. vl hashval(vl v){
  60. vl ans(hc);
  61.  
  62. lp(h,0,hc){
  63. ll p_pow=1;
  64. lp(i,0,v.size()){
  65. ans[h]=(ans[h]+v[i]*p_pow)%MOD[h];
  66. p_pow=(p_pow*pr[h])%MOD[h];
  67. }
  68. }
  69. return ans;
  70. }
  71.  
  72. void init(){
  73. len=(int)sqrt(n)+1;
  74. for(int i=0;i<n;i+=len){
  75. vl ax;
  76. lp(k,i,min(i+len,n))
  77. ax.push_back(a[k]);
  78.  
  79. vl bx;
  80. lp(k,i,min(i+len,m))
  81. bx.push_back(b[k]);
  82.  
  83. vl hv=hashval(ax);
  84. lp(h,0,hc)
  85. blc[h][i/len]=hv[h];
  86. blcvl[i/len]=ax;
  87.  
  88. hv=hashval(bx);
  89. lp(h,0,hc)
  90. blc2[h][i/len]=hv[h];
  91. }
  92. }
  93.  
  94. void update(int i,int val){
  95. int c_i=i/len;
  96.  
  97. blcvl[c_i][i%len]=val;
  98.  
  99. vl hv=hashval(blcvl[c_i]);
  100. lp(h,0,hc)
  101. blc[h][c_i]=hv[h];
  102.  
  103. a[i]=val;
  104. }
  105.  
  106. ll rv(ll i,ll j,int c,int d){
  107. ll sz=j-i+1;
  108. if(!sz)return 0;
  109. if(c)
  110. return blc[d][i/len]%ps[d][sz];
  111. return (blc[d][i/len]*bigMOD(ps[d][len-sz],MOD[d]-2,MOD[d]))%MOD[d];
  112. }
  113.  
  114. bool query(int l,int r){
  115. bool ans=1;
  116. int c_l=l/len,c_r=r/len;
  117. if(c_l==c_r){
  118. for(int i=l,j=0;i<=r;i++,j++)
  119. ans&=(a[i]==b[j]);
  120. }
  121. else{
  122. int j=0;
  123. for(int i=l, l_end=(c_l+1)*len-1;i<=l_end;i++,j++){
  124. ans&=a[i]==b[j];
  125. }
  126. dbg(ans);
  127.  
  128. for(int i=c_l+1;i<=c_r-1;i++,j+=len){
  129. ll in1=j;
  130. ll in2=((j/len)+1)*len-1;
  131. ll in3=j+len-1;
  132.  
  133. ll hs[hc];
  134. lp(h,0,hc)
  135. hs[h]=(((rv(in1,in2,1,h)*ps[h][in2-in1+1])%MOD[h])+rv(in2+1,in3,0,h))%MOD[h];
  136.  
  137. lp(h,0,hc)
  138. ans&=blc[h][i]==hs[h];
  139. }
  140. dbg(ans);
  141.  
  142. for(int i=c_r*len;i<=r;i++,j++){
  143. ans&=a[i]==b[j];
  144. }
  145. dbg(ans);
  146. }
  147. return ans;
  148. }
  149.  
  150. void solve(){
  151. lp(h,0,hc){
  152. ps[h][0]=1;
  153. lp(i,1,320)
  154. ps[h][i]=(ps[h][i-1]*pr[h])%MOD[h];
  155. }
  156.  
  157.  
  158. map<ll,ll>mp;
  159. vl tmp;
  160.  
  161. n=II,m=II;
  162. lp(i,0,n)a.push_back(II),tmp.push_back(a.back());
  163. lp(i,0,m)b.push_back(II),tmp.push_back(b.back());
  164.  
  165. sort(r(tmp));
  166. ll v=1;
  167. lp(i,0,tmp.size())
  168. if(mp.find(tmp[i])==mp.end())
  169. mp[tmp[i]]=v++;
  170.  
  171. lp(i,0,n)a[i]=mp[a[i]];
  172. lp(i,0,m)b[i]=mp[b[i]];
  173.  
  174. init();
  175.  
  176. if(DEBUGGER){
  177. lp(i,0,n)cout<<a[i]<<' ';cout<<endl;
  178. lp(i,0,m)cout<<b[i]<<' ';cout<<endl;
  179. dbg(len);
  180. // lp(i,0,len)cout<<blc[i]<<' ';cout<<endl;
  181. lp(i,0,len){
  182. lp(j,0,blcvl[i].size())
  183. cout<<blcvl[i][j]<<' ';
  184. cout<<", ";
  185. }cout<<endl;
  186. // lp(i,0,len)cout<<blc2[i]<<' ';cout<<endl;
  187. }
  188.  
  189. ll q=II;
  190. while(q--){
  191. if(II==1){
  192. ll i=II-1,x=II;
  193. if(mp.find(x)==mp.end())
  194. mp[x]=v++;
  195. x=mp[x];
  196. update(i,x);
  197. }
  198. else{
  199. ll l=II-1,r=II-1;
  200. if(query(l,r)) outa("YES");
  201. else outa("NO");
  202. }
  203. }
  204. }
  205.  
  206. int main(void){
  207. io;
  208. int multipletest=0;
  209. if(multipletest){
  210. int tc;
  211. cin>>tc;
  212. while(tc--)
  213. solve();
  214. }
  215. else
  216. solve();
  217. return 0;
  218. }
  219.