Time limit: 1s
Memory limit: 256MB
Input: matmare.in
Output: matmare.out
Cerință
Se dau două șiruri, de mărime și de mărime , ambele indexate de la . Se construiește matricea de linii și coloane, unde = . Prin operația | , pentru și numere naturale, ne referim la operația de SAU pe biti. Operația se efectuează astfel: se scriu numerele și în baza , iar numărul | are bitul activ dacă și numai dacă fie are bitul respectiv activ, fie are bitul respectiv activ.
Se dau intrebari de forma: dându-se o submatrice, calculați suma valorilor din aceasta.
: in C++, operatia de SAU pe biti se poate implementa astfel: "".
Date de intrare
Se citesc , , pe prima linie din fișierul de intrare matmare.in
. Pe a doua linie se citește șirul de elemente. Pe a treia linie se citește sirul de elemente.
Pe următoarele linii se citesc patru valori , , , , semnificând o intrebare despre submatricea dintre liniile și și coloanele și .
Date de ieșire
Se vor afișa linii, pe a -a fiind un singur număr: suma submatricei de la întrebarea .
Restricții și precizări
- .
# | Punctaj | Restricții |
---|---|---|
1 | 20 | |
2 | 20 | |
3 | 40 | |
4 | 20 | Fără alte restricții |
Exemplu
matmare.in
3 4 2
1 4 3
4 6 1 0
1 1 3 4
1 2 3 3
matmare.out
53
29
Explicație
Matricea rezultată este următoarea:
5 7 1 1
4 6 5 4
7 7 3 3
Pentru prima întrebare, suma elementelor din întreaga matrice este .
Pentru a doua întrebare, suma elementelor din submatricea este .