Submission #570952

#TimeUsernameProblemLanguageResultExecution timeMemory
570952beaconmcSecret (JOI14_secret)C++14
0 / 100
20074 ms8476 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3") typedef long long ll; #define FOR(i,x,y) for(ll i=x; i<y; i++) #define FORNEG(i,x,y) for(ll i=x; i>y; i--) #define double long double #include "secret.h" using namespace std; vector<vector<ll>> sus(129); vector<ll> nums(129); ll n; void sussy(ll a, ll b){ if (b-a > 2){ ll mid = (a+b)/2; vector<ll> left; vector<ll> right; left.push_back(nums[mid-1]); FORNEG(i, mid-2, a-1){ left.push_back(Secret(nums[i], left[left.size()-1])); } right.push_back(nums[mid]); FOR(i,mid+1, b){ right.push_back(Secret(right[right.size()-1], nums[i])); } reverse(left.begin(), left.end()); for (auto&i : left){ sus[mid].push_back(i); } for (auto&i : right){ sus[mid].push_back(i); } sussy(a, mid); sussy(mid, b); } } void Init(int N, int A[]) { n = N; FOR(i,0,128) nums[i] = 1; FOR(i,0,N) nums[i] = A[i]; sussy(0,128); } int Query(int L, int R){ ll lo = 0; ll hi = 128; while (lo<hi){ ll mid = (lo+hi)/2; if (hi>n){ hi = mid; continue; } if (L<=mid && mid<=R){ cout << mid << endl; ll size = sus[mid].size()/2; return Secret(sus[mid][size+(R-mid)], sus[mid][size - (mid - L)]); } if (mid<=L && mid<=R){ lo = mid; } if (mid >= L && mid >= R){ hi = mid; } } }

Compilation message (stderr)

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