| Task: | Kyselyt |
| Sender: | Sisuaski |
| Submission time: | 2025-10-17 21:20:50 +0300 |
| Language: | C++ (C++20) |
| 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.02 s | 1, 2, 3, 4 | details |
| #2 | ACCEPTED | 0.02 s | 1, 2, 3, 4 | details |
| #3 | ACCEPTED | 0.03 s | 1, 3, 4 | details |
| #4 | ACCEPTED | 0.11 s | 2, 3, 4 | details |
| #5 | ACCEPTED | 0.15 s | 2, 3, 4 | details |
| #6 | ACCEPTED | 0.13 s | 2, 3, 4 | details |
| #7 | ACCEPTED | 0.14 s | 3, 4 | details |
| #8 | ACCEPTED | 0.22 s | 4 | details |
| #9 | ACCEPTED | 0.34 s | 4 | details |
| #10 | ACCEPTED | 0.29 s | 4 | details |
| #11 | ACCEPTED | 0.16 s | 3, 4 | details |
| #12 | ACCEPTED | 0.33 s | 4 | details |
| #13 | ACCEPTED | 0.09 s | 3, 4 | details |
| #14 | ACCEPTED | 0.18 s | 4 | details |
| #15 | ACCEPTED | 0.20 s | 4 | details |
| #16 | ACCEPTED | 0.23 s | 4 | details |
Code
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int MN = 1<<19;
int xs[MN];
int xc[MN];
int tree[2*MN];
vector<int> pos[MN];
int count(int y, int p) {
auto& v = pos[y];
return lower_bound(v.begin(),v.end(),p)-v.begin();
}
int count(int y, int a, int b) {
if (y==0) return 0;
return count(y,b) - count(y,a);
}
int build(int i, int a, int b) {
if (b-a<=1) return tree[i];
int m = (a+b)/2;
int x = build(2*i,a,m);
int y = build(2*i+1,m,b);
if (x==y) return tree[i]=x;
int cx = count(x,a,b);
int cy = count(y,a,b);
int res = tree[i] = 2*cx>b-a ? x : 2*cy>b-a ? y : 0;
return res;
}
void collect(int a, int b, vector<int>& v) {
for(a+=MN,b+=MN; a<=b; a/=2,b/=2) {
if (a%2==1) v.push_back(tree[a++]);
if (b%2==0) v.push_back(tree[b--]);
}
}
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int n,q;cin>>n>>q;
for(int i=0;i<n;++i)cin>>xs[i],xc[i]=xs[i];
xc[n]=-1;
sort(xc,xc+n+1);
int k = unique(xc,xc+n+1)-xc;
for(int i=0; i<n; ++i) {
int y = lower_bound(xc,xc+k,xs[i])-xc;
tree[MN+i]=y;
pos[y].push_back(i);
}
build(1,0,MN);
vector<int> v;
while(q--){
int a,b;cin>>a>>b;
v.clear();
collect(a-1,b-1,v);
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
int x=0;
for(int i:v) {
int c = count(i,a-1,b);
if (2*c > b-a+1) {
x=i;
break;
}
}
cout<<xc[x]<<'\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 |
