GP28439. CLRCLE

提交6 通过2
通过率33.3%
文件IO启用
输入文件circle.in
输出文件circle.out
时间限制2000ms
内存限制512MiB
    ID: 14598 传统题 文件IO 输入文件:circle.in 输出文件:circle.out 2000ms 512MiB 尝试: 6 已通过: 2 难度: 提高 上传者: 标签>倍增

题目描述

题目描述

一个环上按顺时针顺序排列着 nn 个位置,编号为 1,2,…,n1,2,\ldots,n,其中位置 nn 与位置 1 相邻。位置 ii 上有一个非零整数 aia_i。

每次游戏开始时,你可以任选一个位置作为起点,将该位置上的数加入总分,并拥有 kk 次剩余跳跃次数。

只要剩余跳跃次数大于 0,就必须从当前位置 ii 跳跃:

  • 若 ai>0a_i>0,顺时针移动 aia_i 步;
  • 若 ai<0a_i<0,逆时针移动 ∣ai∣|a_i| 步。

跳跃沿环进行,可以经过同一位置多次。每跳跃一次,剩余跳跃次数减少 1,并将落点上的数加入总分。跳跃途中经过的位置不计分。

你的朋友提出了 qq 次询问。每次询问指定一个特殊区域:从位置 ll 开始,顺时针连续的 dd 个位置。对于该次询问,每当一次跳跃从特殊区域外的位置出发、落在特殊区域内的位置时,剩余跳跃次数额外减少 1。起点位于特殊区域内不触发额外扣减,跳跃途中经过特殊区域也不触发额外扣减。

完成一次跳跃及其扣减后,如果剩余跳跃次数小于或等于 0,游戏立即结束。本次跳跃落点上的数仍计入总分。

对于每次询问,求游戏结束时可能获得的最大总分,以及有多少个不同起点可以获得该最大总分。各次询问互相独立,游戏开始时的剩余跳跃次数均为 kk。

输入格式

从文件 circle.in 中读取数据。

第一行包含两个整数 n,kn,k,分别表示环上的位置数和初始跳跃次数。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

第三行包含一个整数 qq,表示询问次数。

接下来 qq 行,每行包含两个整数 l,dl,d,表示特殊区域从位置 ll 开始,顺时针连续包含 dd 个位置。

输出格式

输出到文件 circle.out 中。

对于每次询问,输出一行两个整数,分别表示最大总分和能够获得该最大总分的起点数量。

样例

3 2
2 -1 1
2
3 1
1 2
4 1
5 1
4 2
5 5 5 5
1
2 2
15 3

数据规模与约定

本题采用子任务捆绑计分:只有通过一个子任务的全部测试点,才能获得该子任务的分数。

子任务 分值 特殊限制
1 10 n≤10n\le10,k≤10k\le10,q≤5q\le5
2 15 n≤1000n\le1000,k≤1000k\le1000,q=1q=1
3 所有 ai>0a_i>0
4 20 每次询问均满足 d=nd=n
5 40 无额外限制

对于所有数据,满足:

  • 1≤n≤2×1041\le n\le2\times10^4;
  • 1≤k≤10101\le k\le10^{10};
  • 1≤q≤2×1021\le q\le2\times10^2;
  • −108≤ai≤108-10^8\le a_i\le10^8,且 ai≠0a_i\ne0;
  • 每次询问均满足 1≤l≤n1\le l\le n,1≤d≤n1\le d\le n。

下发文件

下载三组测试数据,非真实测试数据