Submission #783225

#TimeUsernameProblemLanguageResultExecution timeMemory
783225thimote75Intercastellar (JOI22_ho_t1)C++14
100 / 100
368 ms9208 KiB
#include <bits/stdc++.h> #define int long long using namespace std; using idata = vector<int>; void cumul (idata &a) { for (int i = 1; i < a.size(); i ++) a[i] += a[i - 1]; } int bs (idata &arr, int t) { int a = -1; int b = arr.size(); while (b - a > 1) { int c = (a + b) >> 1; if (arr[c] >= t) b = c; else a = c; } return b; } signed main () { int N; cin >> N; idata sizes (N); idata values(N); for (int i = 0; i < N; i ++) { int x; cin >> x; int count = 1; while ((x & 1) == 0) { count *= 2; x >>= 1; } sizes [i] = count; values[i] = x; } cumul(sizes); int Q; cin >> Q; for (int i = 0; i < Q; i ++) { int x; cin >> x; int r = bs(sizes, x); cout << values[r] << "\n"; } }

Compilation message (stderr)

Main.cpp: In function 'void cumul(idata&)':
Main.cpp:10:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     for (int i = 1; i < a.size(); i ++)
      |                     ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...