dotnet (Retea de puncte, nu platforma Microsoft ;-))
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
Exemplu
dotnet.in |
dotnet.out |
1 2 |
4.23 3.87 |
Timp maxim de executie/test: 0.5 secunde
student Ciobaca
Stefan
Facultatea de Informatica Iasi
addictedtoprogramming
at yahoo dot com