Submission #1311520

#TimeUsernameProblemLanguageResultExecution timeMemory
1311520FaresSTHSecret (JOI14_secret)C++20
0 / 100
1193 ms4432 KiB
#include"bits/stdc++.h"
#include "secret.h"
using namespace std;
using ll=long long;
#define S second
#define F first
const int N=10;
vector<vector<int>>dst(N,vector<int>(1<<N,-1));
vector<int>a;
bool bt(int x,int y){
	return (x&(1<<y))>0;
}
void Init(int n,int A[]){
	for(int i=0;i<n;i++)a.push_back(A[i]);
	for(int l=0;l<10;l++){
		// for(int i=0;i<n;i++){
		// 	if(bt(i,l)){
		// 		if(!bt(i-1,l))dst[l][i]=a[i];
		// 		else dst[l][i]=Secret(dst[l][i-1],a[i]);
		// 	}
		// }
		for(int i=n-1;i>=0;i--){
			if(!bt(i,l)){
				if(bt(i+1,l))dst[l][i]=a[i];
				else dst[l][i]=Secret(a[i],dst[l][i+1]);
			}
		}
	}
}
int Query(int l,int r){
	if(l==r)return a[l];
	int msb=__builtin_clz(l^r)-22;
	int res=a[l];
	for(int i=l+1;i<=r;i++)res=Secret(res,a[i]);
	return res;
	return Secret(dst[msb][l],dst[msb][r]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...