Submission #36126910


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long u64; // 2^64 要用完
#define rep(i,a,n) for(u64 i=a;i<(u64)n;i++)
u64 read(){u64 r;scanf("%llu",&r);return r;}
const int N_MAX=1e6+10;
const int SP=1<<3;
const int SN=1<<SP;//预计算 cache大小
u64 A[N_MAX];
u64 pw[N_MAX]={1};//pw[i]=basis**i,pw[0]=1
u64 hs[N_MAX];//hw[i]=前i个的在nimber下的hash,不需要mod[0,2^{2^k})中的nimber做加乘结果还在[0,2^{2^k})中
u64 small[SN][SN];//预计算
template<bool is_pre=false> // 预计算
u64 nim_product(u64 a,u64 b,int p=1<<6){ // a < (1<<p), b < (1<<p), p=1<<k
  if(min(a,b)<=1)return a*b;
  if(!is_pre and p<=SP)return small[a][b];
  p>>=1;//2^k/2=2^{k-1}
  u64 a0=(a>>p),a1=a&((1ull<<p)-1); // a=a0*2^{2^{k-1}}+a1;
  u64 b0=(b>>p),b1=b&((1ull<<p)-1); // b=b0*2^{2^{k-1}}+b1;
  u64 a1b1=nim_product<is_pre>(a1,b1,p);
  // = ((a0\otimes b0)\otimes 2^{2^{k-1}-1})
  return nim_product<is_pre>(nim_product<is_pre>(a0,b0,p),1ull<<(p-1),p)^
    // \oplus (2^{2^{k-1}}\cdot ((a0\oplus a1)\otimes(b0\oplus b1)\ominus (a1\oplus b1))\ )
    ((nim_product<is_pre>(a0^a1,b0^b1,p)^a1b1)<<p)^
    // \oplus (a1\otimes b1)
    a1b1;
}
u64 get(int l,int r){return nim_product(hs[l],pw[r-l])^hs[r];} // hs[r]-hs[l]*(basis**(r-l))
int main(){
  int N=read();
  int Q=read();
  rep(i,0,N)A[i]=read();
  rep(i,0,SN)rep(j,0,SN)small[i][j]=nim_product<true>(i,j,SP);
  mt19937_64 rng(time(NULL));//runtime random
  u64 basis=rng();
  rep(i,1,N+1){
    pw[i]=nim_product(pw[i-1],basis);//pw[i]=pw[i-1]*b
    hs[i]=nim_product(hs[i-1],basis)^A[i-1];//hs[i]=hs[i-1]*b+a[i-1]
  }

  while(Q--){//(l,r]
    int l0=read()-1;
    int r0=read();
    int l1=read()-1;
    int r1=read();//l1-l0==r1-r0
    int l2=read()-1;
    int r2=read();
    int l=0;
    int r=min(r2-l2,r0-l0)+1;
    while(l+1<r){//二分找不等的点
      int m=(l+r)/2;
      ((get(l0,l0+m)^get(l1,l1+m)^get(l2,l2+m))?r:l)=m;
    }
    printf("%s\n",(l2+l!=r2 and(l0+l==r0 or (A[l0+l]^A[l1+l])<A[l2+l]))?"Yes":"No");
  }
  return 0;
}

Submission Info

Submission Time
Task Ex - XOR Sum of Arrays
User cromarmot
Language C++ (GCC 9.2.1)
Score 600
Code Size 2018 Byte
Status AC
Exec Time 1203 ms
Memory 15968 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:45:9: warning: unused variable ‘r1’ [-Wunused-variable]
   45 |     int r1=read();//l1-l0==r1-r0
      |         ^~
./Main.cpp: In function ‘u64 read()’:
./Main.cpp:5:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
    5 | u64 read(){u64 r;scanf("%llu",&r);return r;}
      |                  ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 68
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_a_small_00.txt, 01_a_small_01.txt, 01_a_small_02.txt, 01_a_small_03.txt, 02_n_small_00.txt, 02_n_small_01.txt, 03_q_small_00.txt, 03_q_small_01.txt, 04_random_00.txt, 04_random_01.txt, 04_random_02.txt, 05_period_in_3_00.txt, 05_period_in_3_01.txt, 05_period_in_3_02.txt, 05_period_in_3_03.txt, 05_period_in_3_04.txt, 05_period_in_3_05.txt, 05_period_in_3_06.txt, 05_period_in_3_07.txt, 05_period_in_3_08.txt, 05_period_in_3_09.txt, 05_period_in_3_10.txt, 05_period_in_3_11.txt, 05_period_in_3_12.txt, 05_period_in_3_13.txt, 05_period_in_3_14.txt, 05_period_in_3_15.txt, 06_period_00.txt, 06_period_01.txt, 06_period_02.txt, 06_period_03.txt, 06_period_04.txt, 06_period_05.txt, 06_period_06.txt, 06_period_07.txt, 06_period_08.txt, 06_period_09.txt, 06_period_10.txt, 06_period_11.txt, 06_period_12.txt, 06_period_13.txt, 06_period_14.txt, 06_period_15.txt, 07_corner_00.txt, 07_corner_01.txt, 08_handmade_00.txt, 09_lcp_eq_1_00.txt, 09_lcp_eq_1_01.txt, 09_lcp_eq_1_02.txt, 09_lcp_eq_1_03.txt, 09_lcp_eq_1_04.txt, 10_lcp_eq_255_00.txt, 10_lcp_eq_255_01.txt, 10_lcp_eq_255_02.txt, 10_lcp_eq_255_03.txt, 10_lcp_eq_255_04.txt, 11_lcp_eq_512_00.txt, 11_lcp_eq_512_01.txt, 11_lcp_eq_512_02.txt, 11_lcp_eq_512_03.txt, 11_lcp_eq_512_04.txt, 12_lcp_eq_1023_00.txt, 12_lcp_eq_1023_01.txt, 12_lcp_eq_1023_02.txt, 12_lcp_eq_1023_03.txt, 12_lcp_eq_1023_04.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 15 ms 4068 KiB
00_sample_01.txt AC 14 ms 4152 KiB
01_a_small_00.txt AC 230 ms 15864 KiB
01_a_small_01.txt AC 1007 ms 15844 KiB
01_a_small_02.txt AC 1005 ms 15728 KiB
01_a_small_03.txt AC 997 ms 15724 KiB
02_n_small_00.txt AC 251 ms 4080 KiB
02_n_small_01.txt AC 255 ms 4080 KiB
03_q_small_00.txt AC 366 ms 15812 KiB
03_q_small_01.txt AC 365 ms 15828 KiB
04_random_00.txt AC 1040 ms 15856 KiB
04_random_01.txt AC 1031 ms 15860 KiB
04_random_02.txt AC 1033 ms 15856 KiB
05_period_in_3_00.txt AC 1054 ms 15860 KiB
05_period_in_3_01.txt AC 1046 ms 15840 KiB
05_period_in_3_02.txt AC 1056 ms 15836 KiB
05_period_in_3_03.txt AC 1040 ms 15968 KiB
05_period_in_3_04.txt AC 1150 ms 15728 KiB
05_period_in_3_05.txt AC 1138 ms 15728 KiB
05_period_in_3_06.txt AC 1108 ms 15872 KiB
05_period_in_3_07.txt AC 1148 ms 15808 KiB
05_period_in_3_08.txt AC 1123 ms 15848 KiB
05_period_in_3_09.txt AC 1118 ms 15860 KiB
05_period_in_3_10.txt AC 1114 ms 15720 KiB
05_period_in_3_11.txt AC 1112 ms 15868 KiB
05_period_in_3_12.txt AC 1202 ms 15808 KiB
05_period_in_3_13.txt AC 1203 ms 15804 KiB
05_period_in_3_14.txt AC 1196 ms 15800 KiB
05_period_in_3_15.txt AC 1195 ms 15844 KiB
06_period_00.txt AC 1045 ms 15732 KiB
06_period_01.txt AC 1034 ms 15860 KiB
06_period_02.txt AC 1038 ms 15960 KiB
06_period_03.txt AC 1051 ms 15860 KiB
06_period_04.txt AC 1142 ms 15860 KiB
06_period_05.txt AC 1120 ms 15844 KiB
06_period_06.txt AC 1132 ms 15860 KiB
06_period_07.txt AC 1125 ms 15724 KiB
06_period_08.txt AC 1126 ms 15736 KiB
06_period_09.txt AC 1115 ms 15736 KiB
06_period_10.txt AC 1103 ms 15832 KiB
06_period_11.txt AC 1126 ms 15848 KiB
06_period_12.txt AC 1203 ms 15808 KiB
06_period_13.txt AC 1198 ms 15896 KiB
06_period_14.txt AC 1202 ms 15728 KiB
06_period_15.txt AC 1201 ms 15964 KiB
07_corner_00.txt AC 222 ms 15860 KiB
07_corner_01.txt AC 1109 ms 15860 KiB
08_handmade_00.txt AC 14 ms 4132 KiB
09_lcp_eq_1_00.txt AC 842 ms 15732 KiB
09_lcp_eq_1_01.txt AC 827 ms 15860 KiB
09_lcp_eq_1_02.txt AC 832 ms 15740 KiB
09_lcp_eq_1_03.txt AC 839 ms 15724 KiB
09_lcp_eq_1_04.txt AC 829 ms 15860 KiB
10_lcp_eq_255_00.txt AC 432 ms 5912 KiB
10_lcp_eq_255_01.txt AC 429 ms 6044 KiB
10_lcp_eq_255_02.txt AC 429 ms 6080 KiB
10_lcp_eq_255_03.txt AC 433 ms 5916 KiB
10_lcp_eq_255_04.txt AC 430 ms 6044 KiB
11_lcp_eq_512_00.txt AC 704 ms 11792 KiB
11_lcp_eq_512_01.txt AC 687 ms 11716 KiB
11_lcp_eq_512_02.txt AC 684 ms 11784 KiB
11_lcp_eq_512_03.txt AC 685 ms 11600 KiB
11_lcp_eq_512_04.txt AC 683 ms 11740 KiB
12_lcp_eq_1023_00.txt AC 685 ms 11704 KiB
12_lcp_eq_1023_01.txt AC 691 ms 11796 KiB
12_lcp_eq_1023_02.txt AC 685 ms 11748 KiB
12_lcp_eq_1023_03.txt AC 683 ms 11768 KiB
12_lcp_eq_1023_04.txt AC 689 ms 11616 KiB