제출 #949745

#제출 시각아이디문제언어결과실행 시간메모리
949745blackavarIndex (COCI21_index)C++14
60 / 110
2577 ms55980 KiB
#include <bits/stdc++.h> using namespace std; const int offset = (1 << 18); struct st{ vector <long long> vec[offset * 2]; void insert (long long a, long long b) { a += offset; while (a) { vec[a].push_back(b); a /= 2; } } void init() { for (int i = 0; i < offset * 2; i++) sort(vec[i].begin(), vec[i].end()); } long long get(long long id, long long l, long long r, long long a, long long b, long long x) { if (l > b || r < a) return 0; if (l >= a && r <= b) return (lower_bound(vec[id].begin(), vec[id].end(), x)) - vec[id].begin(); long long mid = (l + r) / 2; return get(id * 2, l, mid, a, b, x) + get(id * 2 + 1, mid + 1, r, a, b, x); } }segTree; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n, q; cin >> n >> q; long long a[n + 1]; for (int i = 1; i <= n; i++){ long long x; cin >> x; a[i] = x; segTree.insert(i, x); } segTree.init(); while (q--) { long long l, r; cin >> l >> r; long long lo = 1, hi = 1e9, res = -1; while (lo <= hi) { long long mid = lo + (hi - lo) / 2; long long cntx = r - l + 1 - segTree.get(1, 0, offset - 1, l, r, mid); if (cntx >= mid) { lo = mid + 1; res = mid; } else hi = mid - 1; } cout << res << "\n"; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

index.cpp: In function 'int main()':
index.cpp:37:15: warning: variable 'a' set but not used [-Wunused-but-set-variable]
   37 |     long long a[n + 1];
      |               ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...