| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1290602 | monaxia | Secret (JOI14_secret) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define pb push_back
#define ppb pop_back
#define fr first
#define sc second
#define all(v) v.begin(), v.end()
#define vektor vector
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
constexpr ull Mod = (119 << 23) | 1;
constexpr ull sqr = 223;
constexpr ld eps = 1e-9;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll random_ll(ll l, ll r) {if (l > r) return -1; return uniform_int_distribution<ll>(l, r)(rng);}
#include "secret.h"
int tre[25][1005];
int n;
int a[1001] ;
void inittt(int l, int r){
int layer = __lg(r - l + 1);
if(l == r){
tre[layer][l] = a[l];
return;
}
int mid = (l + r) >> 1;
tre[layer][mid] = a[mid];
tre[layer][mid + 1] = a[mid + 1];
for(int i = mid - 1; i >= l; i --){
tre[layer][i] = Secret(a[i], tre[layer][i + 1]);
}
for(int i = mid + 2; i <= r; i ++){
tre[layer][i] = Secret(tre[layer][i - 1], a[i]);
}
inittt(l, mid);
inittt(mid + 1, r);
}
void Init(int N, int A[]){
n = N;
for(int i = 1; i <= n; i ++) a[i] = A[i - 1];
inittt(1, n, 1);
}
int Query(int l, int r){
l ++;
r ++;
int layer = __lg(r - l + 1);
return Secret(tre[layer][l], tre[layer][r]);
}
