| Task: | Kyselyt |
| Sender: | jlaire |
| Submission time: | 2025-10-18 04:49:18 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 10 |
| #2 | ACCEPTED | 20 |
| #3 | ACCEPTED | 30 |
| #4 | ACCEPTED | 40 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | 1, 2, 3, 4 | details |
| #2 | ACCEPTED | 0.01 s | 1, 2, 3, 4 | details |
| #3 | ACCEPTED | 0.01 s | 1, 3, 4 | details |
| #4 | ACCEPTED | 0.12 s | 2, 3, 4 | details |
| #5 | ACCEPTED | 0.13 s | 2, 3, 4 | details |
| #6 | ACCEPTED | 0.12 s | 2, 3, 4 | details |
| #7 | ACCEPTED | 0.26 s | 3, 4 | details |
| #8 | ACCEPTED | 0.26 s | 4 | details |
| #9 | ACCEPTED | 0.28 s | 4 | details |
| #10 | ACCEPTED | 0.59 s | 4 | details |
| #11 | ACCEPTED | 0.18 s | 3, 4 | details |
| #12 | ACCEPTED | 0.40 s | 4 | details |
| #13 | ACCEPTED | 0.14 s | 3, 4 | details |
| #14 | ACCEPTED | 0.30 s | 4 | details |
| #15 | ACCEPTED | 0.28 s | 4 | details |
| #16 | ACCEPTED | 0.17 s | 4 | details |
Code
#include <algorithm>
#include <iostream>
#include <map>
#include <utility>
#include <vector>
using namespace std;
using pii = pair<int,int>;
const int N=1<<18;
#define boss first
#define delta second
pii operator+(pii a, pii b) {
if (a.boss == b.boss) {
return pii(a.boss, a.delta + b.delta);
}
return a.delta >= b.delta ?
pii(a.boss, a.delta - b.delta) :
pii(b.boss, b.delta - a.delta);
}
pii T[4*N];
void init(int t=1, int tl=0, int tr=N-1) {
if (tl>=tr) return;
int tm = (tl+tr)/2;
init(2*t, tl, tm);
init(2*t+1, tm+1, tr);
T[t] = T[2*t] + T[2*t+1];
}
pii getboss(int t, int ql, int qr, int tl=0, int tr=N-1) {
if (ql<=tl && qr>=tr) return pii(T[t].boss, T[t].delta);
if (qr<tl || ql>tr) return pii(0, 0);
int tm = (tl+tr)/2;
return getboss(2*t, ql, qr, tl, tm) +
getboss(2*t+1, ql, qr, tm+1, tr);
}
int main() {
cin.tie(0)->sync_with_stdio(0);
map<int, vector<int>> occ;
int n,q; cin>>n>>q;
for (int i=0; i<n; i++) {
int x; cin>>x;
T[N+i] = pii(x,1);
occ[x].push_back(i);
}
for (auto& [_,v] : occ) v.push_back(-1), v.push_back(N);
for (auto& [_,v] : occ) sort(v.begin(), v.end());
init();
for (int a,b; cin>>a>>b;) {
a--, b--;
auto [boss,_] = getboss(1,a,b);
auto L = lower_bound(occ[boss].begin(), occ[boss].end(), a);
auto R = upper_bound(occ[boss].begin(), occ[boss].end(), b) - 1;
if (2*(R-L+1)>b-a+1) {
cout << boss << '\n';
}
else {
cout << "-1\n";
}
}
}
Test details
Test 1
Group: 1, 2, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 ... Truncated |
Test 2
Group: 1, 2, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100 100 2 1 2 2 1 2 2 2 1 2 2 1 1 1 1 ... |
| correct output |
|---|
| 2 1 1 2 1 ... |
| user output |
|---|
| 2 1 1 2 1 ... Truncated |
Test 3
Group: 1, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100 100 5 19 44 88 14 79 50 44 14 99 7... |
| correct output |
|---|
| -1 -1 -1 -1 -1 ... |
| user output |
|---|
| -1 -1 -1 -1 -1 ... Truncated |
Test 4
Group: 2, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 ... Truncated |
Test 5
Group: 2, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 1 1 1 2 1 2 1 1 2 1 1 1 1 2 2 ... |
| correct output |
|---|
| 1 1 2 1 1 ... |
| user output |
|---|
| 1 1 2 1 1 ... Truncated |
Test 6
Group: 2, 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 8 2 6 1 10 4 9 7 8 10 4 2 8 2 ... |
| correct output |
|---|
| -1 -1 -1 -1 -1 ... |
| user output |
|---|
| -1 -1 -1 -1 -1 ... Truncated |
Test 7
Group: 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 141307 493258596 365539511 222... |
| correct output |
|---|
| -1 -1 -1 -1 -1 ... |
| user output |
|---|
| -1 -1 -1 -1 -1 ... Truncated |
Test 8
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 1 1 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 ... Truncated |
Test 9
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 1 2 2 2 1 2 2 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 2 2 2 2 2 ... |
| user output |
|---|
| 2 2 2 2 2 ... Truncated |
Test 10
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 286470749 280175209 741317063 ... |
| correct output |
|---|
| -1 -1 -1 -1 -1 ... |
| user output |
|---|
| -1 -1 -1 -1 -1 ... Truncated |
Test 11
Group: 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 613084013 1000000000 411999902... |
| correct output |
|---|
| -1 -1 -1 -1 1000000000 ... |
| user output |
|---|
| -1 -1 -1 -1 1000000000 ... Truncated |
Test 12
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 613084013 1000000000 411999902... |
| correct output |
|---|
| 1000000000 1000000000 -1 1000000000 -1 ... |
| user output |
|---|
| 1000000000 1000000000 -1 1000000000 -1 ... Truncated |
Test 13
Group: 3, 4
Verdict: ACCEPTED
| input |
|---|
| 100000 100000 663307073 663307073 663307073 ... |
| correct output |
|---|
| 329574367 965067805 768744535 691214891 21873594 ... |
| user output |
|---|
| 329574367 965067805 768744535 691214891 21873594 ... Truncated |
Test 14
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 663307073 663307073 663307073 ... |
| correct output |
|---|
| 107596959 249558965 679275202 760593154 725418770 ... |
| user output |
|---|
| 107596959 249558965 679275202 760593154 725418770 ... Truncated |
Test 15
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 663307073 663307073 663307073 ... |
| correct output |
|---|
| 211070558 49212342 651109313 264549124 651109313 ... |
| user output |
|---|
| 211070558 49212342 651109313 264549124 651109313 ... Truncated |
Test 16
Group: 4
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 2 2 2 1 2 1 1 2 2 1 1 1 1 2 1 ... |
| correct output |
|---|
| 1 2 1 1 1 ... |
| user output |
|---|
| 1 2 1 1 1 ... Truncated |
