Submission #54658

#TimeUsernameProblemLanguageResultExecution timeMemory
54658gs18115Secret (JOI14_secret)C++14
30 / 100
688 ms7652 KiB
#include"secret.h" #include<unordered_map> using namespace std; unordered_map<unsigned long long,bool>CHK; unordered_map<unsigned long long,int>SEC; int ST[4567]; int N2; int Secret2(int X,int Y) { unsigned long long P; P=X; P<<=32; P|=Y; if(CHK[P]) return SEC[P]; CHK[P]=true; return SEC[P]=Secret(X,Y); } void P(int I,int N) { ST[I]=N; if(I==1) return; if(I&1) P(I>>1,Secret2(ST[I^1],N)); else P(I>>1,Secret2(N,ST[I^1])); } int Q(int S,int F) { if(S==F) return ST[S]; else if(S==F-1) return Secret2(ST[S],ST[F]); int A; A=Q(S+1>>1,F-1>>1); if(S&1) A=Secret2(ST[S],A); if(!(F&1)) A=Secret2(A,ST[F]); return A; } void Init(int N,int A[]) { for(N2=1;N2<N;N2<<=1); for(int i=0;i<N;i++) ST[i+N2]=A[i]; for(int i=0;i<N+1>>1;i++) P((i<<1)+N2,ST[(i<<1)+N2]); return; } int Query(int L,int R) { return Q(L+N2,R+N2); }

Compilation message (stderr)

secret.cpp: In function 'int Q(int, int)':
secret.cpp:36:10: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     A=Q(S+1>>1,F-1>>1);
         ~^~
secret.cpp:36:17: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
     A=Q(S+1>>1,F-1>>1);
                ~^~
secret.cpp: In function 'void Init(int, int*)':
secret.cpp:48:20: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
     for(int i=0;i<N+1>>1;i++)
                   ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...