Submission #396274

#TimeUsernameProblemLanguageResultExecution timeMemory
396274Killer2501Secret (JOI14_secret)C++14
0 / 100
20084 ms4424 KiB
#include<bits/stdc++.h> #include "secret.h" #define pll pair<ll, ll> #define fi first #define se second #define pb push_back #define task "hopscotch" #define pii pair<ll, pll> using namespace std; using ll = long long; const int N = 1e3+55; const ll mod = 998244353; const ll base = 350; const ll cs = 331; ll m, n, t, k, a[N], ans, tong, b[N], c[N], d[N], P[N][12]; vector<ll> adj[N], kq; ll pw(ll k, ll n) { ll total = 1; for(; n; n >>= 1) { if(n & 1)total = total * k % mod; k = k * k % mod; } return total; } ll findp(ll u, ll lab[]) { return lab[u] < 0 ? u : lab[u] = findp(lab[u], lab); } void hop(ll u, ll v, ll lab[]) { u = findp(u, lab); v = findp(v, lab); if(u == v)return; if(lab[u] > lab[v])swap(lab[u], lab[v]); lab[u] += lab[v]; lab[v] = u; } void dfs(ll u, ll p) { for(ll v : adj[u]) { if(v == p)continue; } } void sol() { cin >> n >> m; for(int i = 1; i <= n; i ++)cin >> a[i]; for(int i = 1; i < n; i ++) { ll x, y; cin >> x >> y; adj[x].pb(y); adj[y].pb(x); } dfs(m, 0); cin >> m; while(m -- > 0) { ll xi, ki; cin >> xi >> ki; xi = (xi + ans) % n + 1; ki = (ki + ans) % n; } } void build(int id, int l, int r) { if(l >= r)return; ll mid = (l + r) / 2; P[mid][id] = b[mid]; P[mid+1][id] = b[mid+1]; for(int i = mid-1; i >= l; i --)P[i][id] = Secret(b[i], P[i+1][id]); for(int i = mid+2; i <= r; i ++)P[i][id] = Secret(b[i], P[i-1][id]); build(id+1, l, mid-1); build(id+1, mid+1, r); } int get(int id, int l, int r, int u, int v) { ll mid = (l + r) / 2; if(l == r)return -1; if(u <= mid && mid <= v)return id; if(mid < u)return get(id+1, l, mid-1, u, v); else return get(id+1, mid+1, r, u, v); } void Init(int n, int a[]) { for(int i = 0; i < n; i ++)b[i] = a[i]; m = n; build(0, 0, m-1); } int Query(int l, int r) { if(l == r)return b[l]; int id = get(0, 0, m-1, l, r); return Secret(P[l][id], P[r][id]); }
#Verdict Execution timeMemoryGrader output
Fetching results...