Submission #781185

#TimeUsernameProblemLanguageResultExecution timeMemory
781185raphaelpIntercastellar (JOI22_ho_t1)C++14
100 / 100
380 ms9164 KiB
#include <bits/stdc++.h> using namespace std; int dico(int l, int r, long long val) { long long mil = (l + r) / 2; if (mil == l) return l; mil = (1 << mil); if (val % mil == 0) { return dico((l + r) / 2, r, val); } else return dico(l, (l + r) / 2, val); } int dico2(int l, int r, long long val, vector<long long> &len) { long long mil = (l + r) / 2; if (mil == l) if (val > len[mil]) return r; else return l; if (val > len[mil]) { return dico2((l + r) / 2, r, val, len); } else return dico2(l, (l + r) / 2, val, len); } int main() { int N; cin >> N; vector<long long> value(N); vector<long long> len(N, 1); for (int i = 0; i < N; i++) { cin >> value[i]; long long dec = dico(0, 31, value[i]); dec = (1 << dec); value[i] /= dec; len[i] *= dec; } for (int i = 1; i < N; i++) { len[i] += len[i - 1]; } int Q; cin >> Q; for (int i = 0; i < Q; i++) { long long x; cin >> x; cout << value[dico2(0, N, x, len)] << '\n'; } }

Compilation message (stderr)

Main.cpp: In function 'int dico2(int, int, long long int, std::vector<long long int>&)':
Main.cpp:19:8: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]
   19 |     if (mil == l)
      |        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...