Se dau N
puncte in planul euclidian prin coordonatele lor, numere intregi. Apoi se efectueaza
M operatii asupra tuturor punctelor,
intr-o ordine data. O operatie poate fi de doua tipuri: de translatie
sau de rotatie. Intr-o operatie de rotatie, punctele sunt rotite
in jurul originii cu un anumit numar de grade in sens trigonometric. Intr-o
operatie de translatie, originea este mutata in alt punct relativ la
originea curenta si coordonatele celorlalte puncte sunt modificate astfel incat
sa reprezinte aceleasi puncte relativ la noua origine.
Cerinta
Scrieti un program care
calculeaza coordonatele tutoror punctelor dupa cele M
operatii.
Date de intrare
Datele de intrare se gasesc
in fisierul dotnet.in. Pe prima
linie a fisierului de intrare se gasesc numerele naturale N
si M separate printr-un spatiu.
Pe urmatoarele N linii se gasesc
cate doua numere intregi pe linie, reprezentand coordonatele punctelor (x
si y in aceasta ordine). Pe urmatoarele
M linii se gaseste descrierea
operatiilor de efectuat, in ordinea in care trebuie efectuate (cate o operatie
pe linie). Descrierea unei operatii consta dintr-o secventa de numere intregi
separate prin spatii. Primul numar reprezinta tipul operatiei: 0 pentru rotatie
si 1 pentru translatie. In cazul rotatiei urmeaza un singur numar intreg cu
valori din [0, 359] reprezentand cu cate grade se rotesc punctele in sens trigonometric.
In cazul translatiei urmeaza doua numere intregi separate printr-un spatiu reprezentand
coordonatele noii origini.
Date de iesire
In fisierul de iesire dotnet.out
se gasesc N linii, fiecare linie
continand cate doua numere reale separate prin exact un spatiu, numere reale
afisate in format zecimal cu 2 zecimale exacte, reprezentand coordonatele unui
punct dupa efectuarea celor M
operatii (x si y in aceasta ordine). Punctul de pe linia i
din fisierul de iesire trebuie sa corespunda punctului de pe linia i
+ 1 din fisierul de intrare.
Restrictii
1 <= N <= 100 000
0 <= M <= 10 000
coordonatele intiale
ale punctelor vor fi din intervalul [-10000,10000]
coordonatele originii
la operatia de translatie vor fi din intervalul [-10,10]