心怡学姐的围栏
题号:NC210898
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

疫情期间, 学校要求同学们进入食堂前需要测量体温, 一次仅能测量一位同学的体温, 后面的同学们需要排队, 根据要求, 每个人都要间隔两米. 为了维持秩序, 学校使用了围栏来划定队伍的排布. 心怡学姐负责将学子食府前围栏排好.

我们将每个围栏简化为一条直线, 围栏间依次首尾相连而成. 最初所有围栏笔直连接. 心怡学姐决定改变进行c次转动, 每次转动对第s个围栏转动a度, 因为围栏是连接起来的, 所有之后的围栏都要转动(这么繁琐的工作, 学姐的小迷弟们自然不会让心怡学姐亲自动手了). 但是心怡学姐也不是很确定自己的安排是否合理, 所有想知道自己每次转动对围栏最尾的影响, 所有想要在学姐的小迷弟团里脱颖而出的你就想解决这个问题.

假设围栏的起点坐标为(0, 0). 初始所有围栏笔直连接, 且与在每条指令后输出围栏尾部的坐标.

输入描述:

输入包含多个实例, 由单个空行分隔.
每个实例的第一行由两个整数n和c组成(1 <= n ,c<= 10000), n为围栏的段数, c是安排命令数. 每个数之间由单个空格分隔.
第二行由n个数组成, 为每段围栏的长度. 每个数之间由单个空格分隔.
之后的c行是每次的安排. 每行由两个整数s和a组成(1 <= s < n, 0 <= a <= 359), 该安排指s和s+1个围栏之间的角度变成a度(之间的角度指从s开始逆时针旋转到s+1所经过的角度) 每个数之间由单个空格分隔.

输出描述:

每个实例的输出由c行组成. 第i行由两个有理数x和y组成, 两个有理数x和y由一个空格隔开. 输出第i个命令后的第n个段的末尾(即围栏整体的末尾)的坐标, 四舍五入到小数点后的两位数.
每两个连续实例的输出必须用一个空行分隔.
示例1

输入

复制
2 1
10 5
1 90

输出

复制
5.00 10.00

说明

示例2

输入

复制
3 2
5 5 5
1 270
2 90

输出

复制
-10.00 5.00
-5.00 10.00

说明