제출 #1138176

#제출 시각아이디문제언어결과실행 시간메모리
1138176Nelt비밀 (JOI14_secret)C++20
100 / 100
345 ms4392 KiB
#include "secret.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define endl "\n" using namespace std; using namespace __gnu_pbds; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); template <typename T, typename key = less_equal<T>> using ordered_set = tree<T, null_type, key, rb_tree_tag, tree_order_statistics_node_update>; const ll N = 1005, lg = 11; ll st[lg][N], a[N], n; void build(ll l, ll r, ll d) { if (l == r) { st[d][l] = a[l]; return; } ll mid = (l + r) >> 1; st[d][mid] = a[mid]; st[d][mid + 1] = a[mid + 1]; for (ll i = mid + 2; i <= r; i++) st[d][i] = Secret(st[d][i - 1], a[i]); for (ll i = mid - 1; i >= l; i--) st[d][i] = Secret(a[i], st[d][i + 1]); build(l, mid, d + 1); build(mid + 1, r, d + 1); } ll query(ll l, ll r, ll d, ll lx, ll rx) { if (!(lx <= l and r <= rx)) return -1; ll mid = (lx + rx) >> 1; if (l == mid + 1) return st[d][r]; if (r == mid) return st[d][l]; if (l <= mid and mid <= r) return Secret(st[d][l], st[d][r]); ll tmp = query(l, r, d + 1, lx, mid); if (tmp != -1) return tmp; tmp = query(l, r, d + 1, mid + 1, rx); if (tmp != -1) return tmp; } void Init(int N, int A[]) { n = N; for (ll i = 0; i < n; i++) a[i] = A[i]; build(0, n - 1, 0); } int Query(int l, int r) { return l == r ? a[l] : query(l, r, 0, 0, n - 1); }

컴파일 시 표준 에러 (stderr) 메시지

secret.cpp: In function 'long long int query(long long int, long long int, long long int, long long int, long long int)':
secret.cpp:42:1: warning: control reaches end of non-void function [-Wreturn-type]
   42 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...