Diferente pentru problema/speculum intre reviziile #2 si #15

Diferente intre titluri:

speculum
Speculum

Diferente intre continut:

Se considera urmatorul caroiaj infinit, cu liniile si coloanele numerotate incepand cu 1:
    1 2 3 4 ...
     1 2 3 4 ...
   ---------
1 | 1 1 1 1 ...
2 | 2 1 1 2
3 | 1 2 1 2 ...
4 | 2 2 1 1
1 | *1 1 1 1* ...
2 | *2 1 1 2*
3 | *1 2 1 2* ...
4 | *2 2 1 1*
      ...
Construit in felul urmator:
Se incepe de la patratul cu de latura 1 ce contine pe pozitia (1, 1) valoarea 1. La fiecare pas se dubleaza dimensiunea patratului in felul urmator:
Se incepe de la patratul cu de latura 1 ce contine pe pozitia *(1, 1)* valoarea *1*. La fiecare pas se dubleaza dimensiunea patratului in felul urmator:
1. Se completeaza in dreapta patratului curent un patrat de aceeleasi dimensiuni, care are coloanele cu aceeleasi valori ca si patratul initial, insa oglindite fata de dreapta verticala dintre aceste patrate. Mai exact daca primul patrat are coloanele C1, C2, ... , Cn-1, Cn patratul din dreapta lui va avea coloanele Cn, Cn-1, ... C2, C1.
*1.* Se completeaza in dreapta patratului curent un patrat de aceeasi dimensiune, care are coloanele cu aceeleasi valori ca si patratul initial, insa oglindite fata de dreapta verticala dintre aceste patrate. Mai exact daca primul patrat are coloanele *C{~1~}, C{~2~}, ... , C{~n-1~}, C{~n~}* patratul din dreapta lui va avea coloanele *C{~n~}, C{~n-1~}, ... C{~2~}, C{~1~}*.
2. Se completeaza in jos fata de patratul unitial un alt patrat de aceeleasi dimensiuni, iar valorile din acest patrat se obtin oglindind fata de orizontala liniile patratului initial si interschimband valorile 1 cu 2.
*2.* Se completeaza in jos fata de patratul initial un alt patrat de aceeasi dimensiune, iar valorile din acest patrat se obtin *oglindind fata de orizontala liniile* patratului initial *si interschimband valorile 1 cu 2 si invers.* Mai precis, liniile initiale *L{~1~}, L{~2~}, ... , L{~n-1~}, L{~n~}* se scriu in ordinea *L{~n~}, L{~n-1~}, ... L{~2~}, L{~1~}* iar in locul fiecarei aparitii a lui 1 se asigneaza 2 si pentru 2 se asigneaza 1.
3. Se completeaza in dreapta - jos fata de patratul initial un nou patrat de aceeleasi dimensiuni care se obtine din patratul initial oglindind atat liniile (orizontal) cat si coloanele (vertical). Valorile raman neschimbate.
*3.* Se completeaza in dreapta - jos fata de patratul initial un nou patrat de aceeasi dimensiune care se obtine din patratul initial oglindind atat liniile (orizontal) cat si coloanele (vertical). Valorile raman neschimbate.
De exemplu la pasul al doilea avem patratul
*1 1*
*2 1*
1 1
2 1
si conform *1.* adaugam in dreapta lui patratul
*1 1*
*1 2* (acesta este patratul initial 'in oglinda', avand aceeleasi coloane dar in ordinea inversa),
si conform 1. adaugam in dreapta lui patratul
si dedesupt, conform *2.*:
*1 2*
*2 2* (patratul initial oglindint orizontal, si cu valorile 1 si 2 interschimbate),
1 1
1 2 (acesta este patratul initial 'in oglinda', avand aceeleasi coloane dar in ordinea inversa),
iar in dreapta - jos, conform *3.*:
*1 2*
*1 1* (patratul initial oglindit de doua ori, sau cel de la pasul *2.* oglindit a doua oara orizontal).
si dedesupt:
1 2
2 2 (patratul initial oglindint 'orizonta', si cu valorile 1 si 2 interschimbate),
Pentru a rezolva problema trebuie sa raspundeti la cateva query-uri de forma *(x{~1~}, y{~1~}, x{~2~}, y{~2~})*, cu seminificatia: care este suma numerelor din caroiaj aflate in dreptunghiul cu colturile stanga-sus *(x{~1~}, y{~1~})* si dreapta-jos *(x{~2~}, y{~2~})*?
iar in dreapta - jos:
 
1 2
1 1 (patratul initial oglindit de doua ori, sau cel de la pasul 2 oglindit inca odata orizontal).
 
 
Pentru a rezolva problema trebuie sa raspundeti la cateva query-uri de forma (x1, y1, x2, y2), cu seminificatia: care este suma numerelor din caroiaj aflate in dreptunghiul cu colturile stanga-sus (x1, y1) si dreapta-jos (x2, y2)?
Coordonata x numeroteaza liniile iar y coloanele.
h2. Date de intrare
Fisierul de intrare $speculum.in$ contine pe prima linie numarul de query-uri T. Urmatoarele T linii contin cate 4 numere intregi : x1 y1 x2 y2.
Fisierul de intrare $speculum.in$ contine pe prima linie numarul de query-uri *T*. Urmatoarele *T* linii contin cate 4 numere intregi : *x{~1~} y{~1~} x{~2~} y{~2~}.*
h2. Date de ieşire
h2. Restricţii
* 1 ≤ T ≤ 20
* 1 ≤ x1 ≤ x2 ≤ 100000 si 1 ≤ y1 ≤ y2 ≤ 100000
* 1 ≤ x1 ≤ x2 ≤ 10^9^
* 1 ≤ y1 ≤ y2 ≤ 10^9^
h2. Exemplu
  13
  9
  24
  85619882
  1125326168
|
h3. Explicaţie

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
9833