世纪轰炸机¶
- 参考时间限制:0.5 秒(参考环境:评测环境与性能;仅供预估)
- 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整;若平台仅支持更粗的粒度,再向上取整到平台可设置值。
- 内存限制:8 MB
背景故事¶
盟军正在用世纪轰炸机演练物资投送。不同士兵携带的补给数量不同,每个机组选择一段连续编号的士兵,并在所有指定起点各投送一份同样的队列。请统计演练结束后战线上各位置收到的补给。
形式化问题描述¶
给定长度为 \(n\) 的序列 \(a\) ,长度为 \(m\) 的战线,以及 \(k\) 个互不相同的起点 \(p_1,\ldots,p_k\) .战线位置编号为 \(1\) 到 \(m\) ,初始补给均为零。
每次投送给出区间 \([l,r]\) .对每个起点 \(p_i\) 及每个 \(0\le j\le r-l\) ,若 \(p_i+j\le m\) ,就在位置 \(p_i+j\) 增加 \(a_{l+j}\) 份补给。超出战线的位置忽略。不同投送、不同起点的贡献都要相加;序列 \(a\) 不会改变。
完成全部 \(q\) 次投送后,输出每个位置的补给总量。
输入格式¶
第一行四个整数 \(n,m,k,q\) .第二行 \(n\) 个整数 \(a_i\) .第三行 \(k\) 个整数 \(p_i\) ;当 \(k=0\) 时这一行为空。接下来 \(q\) 行,每行两个整数 \(l,r\) .
输出格式¶
输出一行 \(m\) 个整数,依次表示位置 \(1\) 到 \(m\) 的补给总量。
样例 1¶
输入¶
5 1 1 5
1 2 3 4 5
1
1 1
2 2
3 3
4 4
5 5
输出¶
15
解释¶
五次投送分别选择一名士兵,唯一位置收到 \(1+2+3+4+5=15\) 份补给。
样例 2¶
输入¶
4 5 2 2
1 2 3 4
1 4
2 4
1 2
输出¶
3 5 4 3 5
解释¶
从任一起点算起,偏移为 \(0,1,2\) 的补给合计分别为 \(3,5,4\) .将这一序列分别从位置 \(1\) 和 \(4\) 开始累加;第二份中超出位置 \(5\) 的部分忽略。
样例 3¶
输入¶
1 3 0 0
9
输出¶
0 0 0
解释¶
没有投送起点,也没有投送操作,所有位置的补给均为零。
数据范围与保证¶
- \(1\le n,m\le2000\) ,\(0\le k\le m\) ,\(0\le q\le30000\) .
- \(0\le a_i\le9\) ,\(1\le p_i\le m\) ,所有 \(p_i\) 互不相同。
- 每次投送满足 \(1\le l\le r\le n\) .
数据分组¶
| 分值比例 | 额外条件 |
|---|---|
| 100% | 无额外条件 |