题目名称 2852. [NOIP模拟] 蚂蚁搬家
输入输出 antt.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 20
题目来源 GravatarShirry 于2017-10-23加入
开放分组 全部用户
提交状态
分类标签
线段树 平衡树
分享题解
通过:10, 提交:19, 通过率:52.63%
Gravatarrewine 100 1.615 s 10.42 MiB C++
GravatarSamle 100 2.292 s 12.64 MiB C++
Gravatarrewine 100 2.400 s 9.85 MiB C++
Gravatarlalalala 100 2.575 s 37.13 MiB C++
GravatarSamle 100 3.211 s 12.24 MiB C++
Gravatarlalalala 100 3.249 s 36.55 MiB C++
GravatarBennettz 100 3.801 s 14.71 MiB C++
GravatarAnson 100 4.126 s 9.85 MiB C++
Gravatarlalalala 100 4.138 s 36.56 MiB C++
Gravatarpoi? 100 4.283 s 27.02 MiB C++
关于 蚂蚁搬家 的近10条评论(全部评论)
喵喵喵
GravatarSamle
2017-10-29 21:07 4楼
《论鬼畜写法的危害》
GravatarSamle
2017-10-29 20:59 3楼
《论鬼畜写法的危害》
Gravatarlalalala
2017-10-26 21:11 2楼
《论鬼畜写法的危害》
Gravatarrewine
2017-10-26 21:07 1楼

2852. [NOIP模拟] 蚂蚁搬家

★★☆   输入文件:antt.in   输出文件:antt.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

很久很久以前,有很多蚂蚁部落共同生活在一片祥和的村庄里。但在某一天,村庄里突然出现了一只食蚁兽,蚂蚁们为了保全性命而决定搬家。

然而这个村庄四面环山,想要离开这个村庄必须要从地洞里离开,村子里一共有2n个地洞,分布在山的左右,一边n个。左边的任意一个地洞都可以通到右边n个地洞中的任意的一个,如图所示(两侧地洞从上至下编号为1到n)。


对于右边的第i个出口,附近有数量为wi的食物。

现在前后依次来了q个蚂蚁部落,第i个部落有ai只蚂蚁,它们会从左边第bi个地洞离开,并且选择一个右侧的出口,出口的食物必须大于等于ai,如果有多个满足要求的出口,则选择距离bi最近的(假设蚂蚁从右边的编号为k的地洞出来,那么距离定义为∣k−bi|)。如果有多个洞口符合要求,选择编号最小的出口离开,并且占据这个出口数量为ai的食物,当前洞口的食物数量减少ai。

请输出每群蚂蚁会选择哪个出口,如果没有符合要求的出口,输出-1,并且忽略这群蚂蚁。

【输入格式】

第一行两个整数n和q。

接下来n行,每行一个整数wi,表示右方第i个洞口的食物数量。

接下来q行,每行两个整数ai和bi,表示蚂蚁数量和它们离开的洞口。

【输出格式】

一共q行,每行一个整数,表示第i群蚂蚁会选择哪个出口。

【样例输入】

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

【样例输出】

5
4
1
-1
2

【提示】

对于30%的数据:0≤n,q≤3000。

对于60%的数据:0≤n,q≤100000。

对于另外20%的数据保证:ai=1。

对于100%的数据:0≤n,q≤500000,ai,wi≤10^9,bi≤n。

【来源】

NOIP 2017 模拟赛