Atenție! Aceasta este ultima versiune a paginii., scrisă la 2023-09-25 09:25:13.000.
Revizia anterioară   Revizia următoare  

Fișierul intrare/ieșire dulciuri.in, dulciuri.out Sursă OJI 2022, clasele 11-12 (OSEPI)
Autor Tamio-Vesa Nakajima Adăugată de avatar teodor94 Teodor Plop teodor94
Timp de execuție pe test 0.35 sec Limită de memorie 131072 KB
Scorul tău N/A Dificultate N/A
open book Poți vedea testele pentru această problemă accesând atașamentele .

Dulciuri (clasele 11-12)

Tsubasa-chan adoră dulciurile! De curând a apărut un nou tip de desert. Astfel decide să înfăptuiască o nouă fabrică care să producă acest produs delicios. Fabrica conține un container imens pătratic, plin de aluat, de 106 x 106 unități. Fiecare punct din container are drept coordonate o pereche de numere reale (x, y), unde 0 ≤ x, y ≤ 106, iar fiecare punct are o dulceață. Dulceața unui punct este un număr real, inițial 0. Pentru fabricarea desertului este nevoie de Q operații, care pot fi de următoarele tipuri:

  • O îndulcire verticală, determinată de o coordonată xu întreagă și o valoare întreagă v. După această operație, toate punctele din container (x, y) unde xu ≤ x < xu + 1 devin mai dulci cu v.
  • O îndulcire orizontală, determinată de o coordonată yu întreagă și o valoare întreagă v. După această operație, toate punctele din container (x, y) unde yu ≤ y < yu + 1 devin mai dulci cu v.
  • O degustare, determinată de 4 coordonate întregi xq, yq, xq’, yq’. Pentru aceeastă operație, Tsubasa ia o lingură, o pune în aluat la punctul (xq, yq), și apoi o duce in linie dreaptă la punctul (xq’, yq’). Mișcarea se efectuează într-o secundă, cu viteză constantă. După aceea, Tsubasa gustă desertul, vrând să afle dulceața totală a aluatului din lingură. Această valoare se calculează în felul următor: dacă lingura trece prin zone de dulceața d1 pentru t1 secunde, de dulceață d2 pentru t2 secunde, …, și de dulceață dk pentru tk secunde, atunci dulceața totală din lingură este t1 • d1 + t2 • d2 + … + tk • dk. Nu se modifică dulceața din container.

Cerință

Dându-se toate operațiile întreprinse în producerea desertului, să se găsească dulcețurile totale ce sunt găsite la toate operațiile de degustare.

Date de intrare

Pe prima linie a fișierului de intrare dulciuri.in se va găsi numărul Q de operații.

Pe următoarele Q linii urmează descrieri a tuturor operațiilor, câte una pe linie, în ordine. O operație este codificată în felul următor:

  • O îndulcire verticală este codificată prin 1 xu v.
  • O îndulcire orizontală este codificată prin 2 yu v.
  • O degustare este codificată prin 3 xq yq xq’ yq’.

Date de ieșire

În fișierul de ieșire dulciuri.out, să se afișeze toate rezultatele degustărilor, în ordine, câte una pe linie. Rezultatul unei degustări se consideră a fi corect daca eroarea absolută sau relativă față de soluția comisiei este cel mult 10-7.

Restricții și precizări

  • Toate coordonatele din datele de intrare sunt întregi în intervalul [0, 1.000.000]
  • 0 ≤ v ≤ 1000
  • v este întreg
  • 1 ≤ Q ≤ 100.000
  • Pentru 20 de puncte nu se fac îndulciri orizontale și Q ≤ 2000
  • Pentru 20 de puncte, la fiecare degustare, fie xq = xq’ sau yq = yq’, Q ≤ 2000
  • Pentru 10 de puncte, se face cel mult o degustare
  • Pentru 20 de puncte, toate degustările se fac după toate îndulcirile
  • Pentru 10 de puncte, Q ≤ 2000
  • Pentru 20 de puncte, fără restricții suplimentare

Mențiune

  • Rezultatele evaluării pot fi diferite față de cele din concurs.

Exemplu

dulciuri.in dulciuri.out Explicație
3
1 2 60
2 3 60
3 0 0 3 4
35

Zonele roz sunt zonele în care s-a aplicat o îndulcire, și numerele reprezintă cu cât s-a îndulcit.
Zona din intersecția îndulcirilor are dulceața 120. Linia diagonală punctată reprezintă traseul.
Traseul are lungimea sqrt(32 + 42) = 5, și este completat într-o secundă – astfel are viteza de 5 unități pe secundă.
Segmentul de la (2, 2.(6)) la (2.25, 3) are lungimea sqrt((2.25–2)2 + (2.(6)–3)2) = 5/12, și are dulceața 60 –
astfel el este traversat în (5/12) × (1/5) = 1/12 secunde, și contribuie cu (1/12) × 60 = 5 la dulceața totală.
Segmentul de la (2.25, 3) la (3, 4) are lungimea sqrt((3–2.25)2 + (4–3)2) = 5/4, și are dulceața 120 –
astfel el este traversat în (5/4) × (1/5) = 1/4 secunde, și contribuie cu ¼ × 120 = 30 la dulceața totală.
Astfel, cum segmentul de la (0, 0) la (2, 2.(6)) contribuie cu 0, dulceața totală este 35.
4
1 2 10
3 2 0 2 1
3 3 0 3 1
3 2 0 2 0
10
0
10

În primul traseu (cel din stânga) trecem mereu printr-o zonă cu dulceața 10, deci rezultatul degustării este 10.
În al doilea traseu (cel din dreapta) trecem mereu printr-o zonă cu dulceața 0, deci rezultatul degustării este 0.
În al treilea traseu, stăm pe loc pentru o secundă într-o zona de dulceață 10, deci răspunsul este 10.
6
1 4 413
1 3 234
2 5 244
2 3 777
3 1 2 14 15
3 31 4 2 40
128.3076923077
29.0881226054
Evident :P

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 3 categorii