Submission #1203743

#TimeUsernameProblemLanguageResultExecution timeMemory
1203743DL_DinhVuMinhHung2k8Secret (JOI14_secret)C++20
Compilation error
0 ms0 KiB
#ifndef LOCAL #include <secret.h> #endif /** Author: Dinh Vu Minh Hung **/ #include <bits/stdc++.h> using namespace std; #ifdef LOCAL #include "debug.cpp" #else #define debug(...) #define debugArr(...) #endif #define C make_pair #define all(a) (a).begin(), (a).end() #define ln '\n' #define size(a) ((int)((a).size())) #define rep(i, n) for (int i = 0, _n = (n); i < _n; ++i) #define foru(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i) #define ford(i, a, b) for (int i = (a), _b = (b); i >= _b; --i) #define fi first #define se second #define eb emplace_back #define MASK(i) (1LL << (i)) #define getbit(x, y) (((x) >> (y)) & 1LL) #define turnon(x, y) ((x) | MASK(y)) #define turnoff(x, y) ((x) & ~MASK(y)) #define flipbit(x, y) ((x) ^ MASK(y)) #define bitcnt(x) __builtin_popcountll(x) #define TIME (1.0 * clock() / CLOCKS_PER_SEC) typedef long double ld; typedef long long ll; typedef pair<int, int> ii; typedef vector<vector<int>> vii; typedef vector<vii> viii; inline int readInt(){ char c; while (c = getchar(), c != '-' && !isdigit(c)); int n, s = (c == '-'); n = (s ? getchar() : c) - 48; while (c = getchar(), isdigit(c)) n = (n << 3) + (n << 1) + c - 48; return s ? -n : n; } inline string readString(){ char c; while (c = getchar(), c == ' ' || c == '\n' || c == '\t'); string s({c}); while (c = getchar(), c != EOF && c != ' ' && c != '\n' && c != '\t') s += c; return s; } template <class X, class Y> inline bool maximize(X &a, const Y &b){ return (a < b ? a = b, true : false); } template <class X, class Y> inline bool minimize(X &a, const Y &b){ return (a > b ? a = b, true : false); } const int maxn = 1005; int n, a[maxn], mask[maxn], val[10][maxn]; map<ii, int> mp; #ifdef LOCAL void read(){ cin >> n; foru(i, 1, n) cin >> a[i]; } int Secret(int x, int y){ return x ^ y; } #endif void dnc(int l, int r, int lvl = 0){ if (l == r) return; int mid = (l + r) >> 1; mask[mid + 1] ^= MASK(lvl); val[lvl][mid] = a[mid], val[lvl][mid + 1] = a[mid + 1]; for (int mn, mx, i = mid - 1; i >= l; --i){ mn = min(val[lvl][i + 1], a[i]), mx = max(a[i], val[lvl][i + 1]); if (mp.find({mn, mx}) == mp.end()) mp[{mn, mx}] = Secret(mn, mx); val[lvl][i] = mp[{mn, mx}]; } for (int mn, mx, i = mid + 2; i <= r; ++i){ mn = min(val[lvl][i - 1], a[i]), mx = max(a[i], val[lvl][i - 1]); if (mp.find({mn, mx}) == mp.end()) mp[{mn, mx}] = Secret(mn, mx); val[lvl][i] = mp[{mn, mx}], mask[i] ^= MASK(lvl); } dnc(l, mid, lvl + 1), dnc(mid + 1, r, lvl + 1); } void Init(int N, int A[]){ n = N; rep(i, n) a[i + 1] = A[i]; dnc(1, n); } int Query(int l, int r){ ++l, ++r; int x = __builtin_ctz(mask[l] ^ mask[r]); int mn = min(val[x][l], val[x][r]), mx = max(val[x][l], val[x][r]); if (mp.find({mn, mx}) == mp.end()) mp[{mn, mx}] = Secret(mn, mx); return mp[{mn, mx}]; } #ifdef LOCAL signed main(){ ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); #define name "name" if (fopen(name".inp", "r")){ freopen(name".inp", "r", stdin); freopen(name".out", "w", stdout); } #define NAME "TASK" if (fopen(NAME".inp", "r")){ freopen(NAME".inp", "r", stdin); freopen(NAME".out", "w", stdout); } read(); dnc(1, n); cout << Query(0, 3) << ln; cout << Query(1, 7) << ln; cout << Query(5, 5) << ln; cout << Query(2, 4) << ln; cerr << "Time elapsed: " << TIME << " s.\n"; return 0; } #endif

Compilation message (stderr)

secret.cpp:2:10: fatal error: secret.h: No such file or directory
    2 | #include <secret.h>
      |          ^~~~~~~~~~
compilation terminated.