Submission #1144918

#TimeUsernameProblemLanguageResultExecution timeMemory
1144918minggaSecret (JOI14_secret)C++20
100 / 100
344 ms8344 KiB
#include "bits/stdc++.h" #include "secret.h" using namespace std; #define ln "\n" #define pb push_back #define fi first #define se second #define all(x) (x).begin(), (x).end() #define sz(x) ((int)(x).size()) // #define int long long const int mod = 1e9 + 7; // const int inf = 2e18; const int N = 1005; int n, a[N], f[N][N], b[N]; // int Secret(int x, int y) { // assert(x != -1 and y != -1); // return min(x + 2 * int(y / 2), (int)1e9); // } void calc(int l, int r) { if(l >= r) return; int m = (l + r) >> 1; // cout << l << ' ' << r << ' ' << m << ln; calc(l, m); calc(m + 1, r); f[m][m] = a[m]; for(int i = m - 1; i >= l; i--) { f[i][m] = Secret(a[i], f[i + 1][m]); } f[m + 1][m + 1] = a[m + 1]; for(int i = m + 2; i <= r; i++) f[m + 1][i] = Secret(f[m + 1][i - 1], a[i]); } void Init(int len, int arr[]) { n = len; for(int i = 1; i <= n; i++) a[i] = arr[i - 1]; memset(f, -1, sizeof f); for(int i = 1; i <= n; i++) f[i][i] = a[i]; calc(1, n); } int Query(int l, int r) { l++, r++; if(l == r) return a[l]; for(int i = l; i <= r; i++) { if(f[l][i] != -1 and f[i + 1][r] != -1) { // cout << i << ' ' << f[l][i - 1] << ' ' << f[i][r] << ln; return Secret(f[l][i], f[i + 1][r]); } } } //Testing // signed main() { // int n; cin >> n; // for(int i = 0; i < n; i++) { // cin >> b[i]; // } // cout << Secret(1, 4) << ' ' << Secret(7, 2) << ln; // Init(n, b); // int q; cin >> q; // for(int i = 1; i <= q; i++) { // int l, r; cin >> l >> r; // int ans = b[l]; // for(int i = l + 1; i <= r; i++) ans = Secret(ans, b[i]); // assert(Query(l, r) == ans); // cout << Query(l, r) << ' ' << ans << ln; // } // }

Compilation message (stderr)

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