PATULJCI - Snow White and the N dwarfs

Snow White and the N dwarfs live in the forest. While the dwarfs mine away Snow White hangs around social networks.

Each morning the dwarfs form a long line and go whistling away to the mine. Snow White runs around them and snaps pictures to upload onto her favorite social network.

When dwarfs enter the mine, Snow White goes back to their house and goes through the pictures, selecting pretty ones. Each dwarf has a colored cap, and there are C different colors. A picture is pretty if more than half caps on it are of the same color. In other words, if there are K dwarfs on the picture, it is pretty if strictly more than K / 2 dwarfs have same colored caps.

Write a program that will check for a set of M pictures if they are pretty, and what color is dominating if they are.


First line contains two integers N and C (3 ≤ N ≤ 300000, 1 ≤ C ≤ 100000) number of dwarfs and number of colors.

Second line contains N integers between 1 and C (inclusive), colors of dwarves hats, ordered the way they formed the line that morning.

Third line contains M (1 ≤ M ≤ 100000), number of pictures.

Next M lines contain two integers A and B (1 ≤ A ≤ B ≤ N). Each line describes one picture. On it there are all dwarves starting from A-th all the way to the B-th.


Output M lines. For each picture output “no” if Snow White doesn't think the picture is pretty, and “yes X”, where X is the color dominating on the picture, if she does.


10 3
1 2 1 2 1 2 3 2 3 3
1 2
1 3
1 4
1 5
2 5
2 6
6 9
7 10

yes 1
yes 1
yes 2
yes 3

hide comments
nh0902: 2024-07-20 08:43:41

Answer yourself this question: if you already know the "dominating" color of two interval, what is the "domniating" color of the combining interval ?

kesh4281: 2020-04-02 06:59:03

this can be done with randomised algorithms as well!!

Sigma Kappa: 2018-06-12 14:00:44

Is not the complexity O((N+M)sqrt(N)log(C))? How did you guys get rid of the log(C)? We need to maintain the frequency of each number, right? Hence log(C)

gustavonunes: 2018-03-09 13:53:47

O((N +M)*sqrt) passes. I did use block of size 333 and worked nice

tiaguito80: 2017-12-04 18:29:32

SQRT Decomposition won't pass, there is a nice solution which works in (n*log(n))/(ratio) where ratio is 1/2 in this problem..

Ashwani Gautam: 2017-03-18 14:41:33

will O((N+M) * root(N)) pass ? mine doesn't :(

spoj2121: 2016-03-29 20:35:18

learned something new...

Bryan Poulsen: 2016-02-23 22:58:24

I am going to guess this unsolvable in python with the give time limit.

Raghav Dilip Mundhada: 2015-11-03 20:22:20

think out of box :)

Raghav Dilip Mundhada: 2015-11-03 20:21:54

nice problem on suffix tree ....... enjoyed solving this Q!!!

Added by:Luka Kalinovcic
Time limit:1s
Source limit:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Resource:COCI 2009/2010 Contest #3