#60680. 蒜头君寻宝
蒜头君寻宝
暂无测试数据。
蒜头君一不小心发现了大海尽头的宝藏,宝藏存在一座岛上,并排列成一条直线。
宝藏由一个长度为 $n$ 序列表示,第 $i(1\leq i\leq n)$ 个位置的价值为 $a_i$,蒜头君最开始在船上,也就是 $0$ 号位置。
接下来有 $Q$ 次操作,共有三种操作,用整数 $op$ 表示操作类型:
op = 1
:输入x 1/2
,表示蒜头君向左或者向右移动 $x$ 步,并捡起路过位置的宝藏。其中 $1$ 表示向左,$2$ 表示向右;每个位置的宝藏只能被拾取一次(比如第一次路过位置 $i$,则拾取其中的价值 $a_i$,后面再路过则不可拾取,即获得的价值为 $0$)。若移动距离超过边界,则到边界停止,边界分别为 $1$ 和 $n$。比如说当前蒜头君在 $3$,那么向左移动 $5$ 步,则最终会停留 $1$ 位置。op = 2
:表示询问上一次移动拾取了多少价值总额,如果前面没有移动过,则输出 $0$。op = 3
:表示询问当前蒜头君的位置在哪里。
数据保证第一步移动会让蒜头君进入 $1\sim n$,即第一步移动会让蒜头君登岛。
输入格式
输入共 $n+Q+2$ 行。
第一行输入一个正整数 $n$,表示序列的长度。
第二行输入 $n$ 个正整数 $a_i$,表示第 $i$ 个位置的价值。
接下来输入一个正整数 $Q$,表示有 $Q$ 次操作。
接下来 $Q$ 行,输入正整数 $op$;
- 如果 $op=1$,再输入
x f
,其中 $f = 1$ 或 $f = 2$。 - 如果 $op = 2$,表示操作 $2$;
- 如果 $op = 3$,表示操作 $3$;
输出格式
对于每一次询问(操作 $2$、操作 $3$),输出对应答案。
数据范围
对于 $10\%$ 的数据,有 $1\leq n,q\leq 100,1\leq a_i\leq 100$。
对于另外 $20\%$ 的数据,有 $1\leq n,q\leq 10^3,1\leq a_i\leq 10^3$。
对于另外 $20\%$ 的数据,有 $1\leq n,q\leq 10^3,1\leq a_i\leq 10^9$。
对于 $100\%$ 的数据,有 $1\leq n,q\leq 10^5,1\leq a_i\leq 10^9, 1\leq x \leq n$。
由于输入数据过多,建议使用 scanf/printf
。
5
1 2 3 4 5
5
1 1 2
2
1 1 2
2
3
1
2
2
5
1 2 3 4 5
5
1 3 2
2
1 1 1
2
3
6
0
2