Căsuța

Time limit: 1s Memory limit: 64MB Input: casuta.in Output: casuta.out

Gigel vrea să își construiască o căsuță în București. El vrea să aleagă o amplasare și o formă bună pentru fundația casei.

Pentru simplitate, considerăm Bucureștiul ca fiind un pătrat cu latura de NN metri, situat într-un sistem de coordonate cartezian, având colțul stânga-jos în punctul (00,00), și colțul dreapta-sus în punctul (NN,NN).

Gigel, excentric de fel, vrea ca forma fundației căsuței să fie una aparte, anume, trebuie să respecte următoarele condiții:

  • Forma este un triunghi dreptunghic, având catetele paralele cu axele sistemului și colțul drept poziționat în dreapta-jos.
  • Vârfurile formei au coordonatele întregi.
  • Lungimea catetei orizontale este un multiplu al lungimii catetei verticale.

În București, unele zone sunt mai valoroase decât celelalte. Mai simplu, Gigel cunoaște pentru fiecare metru pătrat din București dacă acesta este valoros sau nu, prin intermediul unei matrice binare VV, de dimensiuni N×NN \times N. Elementul Vi,jV_{i,j} are valoarea 1 sau 0 după cum aria acoperită de pătratul cu colțul stânga-jos (j1, i1)(j-1,\ i-1) și colțul dreapta-sus (j,i)(j, i) este sau nu valoroasă. Numerotarea liniilor, respectiv a coloanelor începe de la 11.

Definim valoarea unei forme ca fiind suma ariilor intersecțiilor dintre formă și fiecare pătrat valoros din București.

Cerință

Se dau TT variante de fundație care respectă condițiile impuse de Gigel. Pentru fiecare, afișați valoarea formei acesteia.

Date de intrare

Pe prima linie a fișierului casuta.in se află două numere, NN și TT, cu semnificația din enunț. Urmează NN linii a câte NN cifre de 11 sau de 00, fără spații între ele, valorile matricei VV, indexate de la 1. Pe următoarele TT linii se află câte patru întregi, X1,Y1,X2,Y2X_1,Y_1,X_2,Y_2, reprezentând coordonatele vârfurilor ipotenuzei unei variante de fundație.

Date de ieșire

În fișierul casuta.out se va afișa câte un număr real pe fiecare dintre cele TT linii, anume valoarea acelei forme. Numerele trebuie afișate cu 55 zecimale exacte.

Restricții și precizări

  • 1N1 0001 \leq N \leq 1 \ 000
  • 1T1 000 0001 \leq T \leq 1 \ 000 \ 000
  • 0X1<X2N,0Y1<Y2N0 \le X_1 < X_2 \leq N, 0 \leq Y_1 < Y_2 \leq N, pentru toate formele din intrare.
  • Fie L\mathcal{L} lungimea celei mai mari catete verticale, și fie A\mathcal{A} suma ariilor tuturor formelor din intrare.
# Punctaj Restricții
1 10 V[i][j]=1,  1i,jNV[i][j] = 1,\; 1 \leq i,j \leq N
2 10 1A5 000 0001 \leq \mathcal{A} \leq 5 \ 000 \ 000
3 10 1T5 0001 \leq T \leq 5 \ 000
4 10 L=1,  1N300\mathcal{L} = 1,\; 1 \leq N \leq 300
5 10 1N3001 \leq N \leq 300
6 20 L=1\mathcal{L} = 1
7 30 Fără restricții suplimentare.

Exemplul 1

casuta.in

5 3
10000
01010
00000
00000
00100
0 0 2 2
1 0 5 2
2 4 5 5

casuta.out

1.00000
0.25000
0.16666

Explicație

Exemplul corespunde diagramei de mai jos. Cu mov am notat pătratele de arie valoroasă.

Log in or sign up to be able to send submissions!