Mapat

Time limit: 0.2s Memory limit: 16MB Input: mapat.in Output: mapat.out

Dacă ești doar curios, vei vedea un puzzle. Dacă ești disperat, vei vedea un labirint. Dar dacă ai răbdare, îi vei descoperi magia.
– Ernő Rubik

Pentru a descoperi ieșirea din Marele Labirint, exploratorul trebuie să descifreze o hartă antică. Harta este reprezentată sub forma unui tablou bidimensional cu NN linii și MM coloane, cu elemente numere naturale nenule. Liniile sunt numerotate de la 11 la NN (de sus în jos), iar coloanele de la 11 la MM (de la stânga la dreapta).

Definim un mapat ca fiind un pătrat descris de o poziție (i,j)(i, j) numită colț principal și o latură de lungime LL, unde 1Lmin(i,j)1 \le L \le \min(i, j). Mapatul acoperă toate celulele având indicii (x,y)(x, y), unde iL+1xii - L + 1 \le x \le i și jL+1yjj - L + 1 \le y \le j, adică este un pătrat de L×LL \times L celule al cărui colț dreapta-jos este chiar (i,j)(i, j).

Valoarea unui mapat se calculează astfel:

  1. Se determină suma tuturor elementelor din pătrat, notată cu SS.
  2. Valoarea mapatului este produsul dintre SS și valoarea de la poziția (i,j)(i, j).

De exemplu, considerând tabloul de mai jos:

un mapat cu colțul principal la poziția (2,3)(2, 3) și L=2L = 2 acoperă celulele de la pozițiile (1,2),(1,3),(2,2),(2,3)(1, 2), (1, 3), (2, 2), (2, 3). Deci, S=1+2+3+2=8S = 1 + 2 + 3 + 2 = 8 și valoarea mapatului este 8×2=168 \times 2 = 16.

Fixând o lungime LL și o linie ii (cu iLi \ge L), pentru fiecare coloană jLj \ge L, notăm cu AjA_j valoarea mapatului cu colțul principal la coordonatele (i,j)(i, j) și latura de lungime LL. O secvență de mapate situate pe linia ii este determinată de doi indici, stst și drdr. Definim suma secvenței de mapate ca fiind Ast+Ast+1++AdrA_{st} + A_{st+1} + \dots + A_{dr}, cu LstdrML \le st \le dr \le M.

Cerințe

Se dau qq întrebări de tipul 1 și pp întrebări de tipul 2.

  1. Întrebare de tipul 1. Cunoscându-se trei valori LL, ii și maxValmaxVal, determinați lungimea maximă a unei secvențe de mapate cu latura de lungime LL, situate pe linia ii și având suma secvenței de mapate mai mică sau egală cu maxValmaxVal.
  2. Întrebare de tipul 2. Cunoscându-se patru valori LL, ii, minValminVal și maxValmaxVal, determinați numărul secvențelor de mapate cu latura de lungime LL, situate pe linia ii și având suma secvenței de mapate cuprinsă între minValminVal și maxValmaxVal.

Date de intrare

Fișierul de intrare mapat.in conține:

  • Pe prima linie patru numere naturale N,M,q,pN, M, q, p.
  • Pe următoarele NN linii câte MM numere naturale, reprezentând elementele tabloului bidimensional.
  • Următoarele qq linii conțin fiecare câte trei numere: LL, ii, maxValmaxVal (corespunzătoare întrebărilor de tipul 1).
  • Ultimele pp linii conțin fiecare câte patru numere: LL, ii, minValminVal, maxValmaxVal (corespunzătoare întrebărilor de tipul 2).
    Valorile de pe fiecare linie sunt separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire mapat.out va conține:

  • Pe primele qq linii câte un număr natural reprezentând răspunsul la fiecare întrebare de tipul 1, în ordinea în care acestea apar în fișierul de intrare.
  • Pe următoarele pp linii câte un număr natural reprezentând răspunsul la fiecare întrebare de tipul 2, în ordinea în care acestea apar în fișierul de intrare.

Restricții și precizări

  • 1N,M10001 \le N, M \le 1000;
  • Elementele tabloului sunt numere naturale nenule 400\le 400.
  • 1p+q80001 \le p + q \le 8000;
  • 1iN1 \le i \le N, iar iLi \ge L pentru orice întrebare.
  • 1Lmin(N,M)1 \le L \le \min(N, M);
  • 0minVal<maxVal<10150 \le minVal < maxVal < 10^{15} pentru orice întrebare de tipul 2.
  • 0<maxVal<10150 < maxVal < 10^{15} pentru orice întrebare de tipul 1.
# Punctaj Restricții
1 17 N,M50N, M \le 50, p=0p = 0 (există doar întrebări de tipul 1)
2 13 N,M1000N, M \le 1000, p=0p = 0 (există doar întrebări de tipul 1)
3 17 N,M50N, M \le 50, q=0q = 0 (există doar întrebări de tipul 2)
4 14 N,M1000N, M \le 1000, q=0q = 0 (există doar întrebări de tipul 2)
5 39 Fără restricții suplimentare

Exemplul 1

mapat.in

4 4 2 0
1 3 5 2
4 3 1 2
7 8 1 1
2 2 3 1
2 4 20
1 4 16

mapat.out

1
3

Explicație

Avem q=2q = 2 întrebări de tipul 1:
Întrebarea 1: L=2L = 2, i=4i = 4, maxVal=20maxVal = 20. Calculăm AjA_j pentru j2j \ge 2 pe linia 4:
A2=(7+8+2+2)×2=19×2=38A_2 = (7 + 8 + 2 + 2) \times 2 = 19 \times 2 = 38, A3=(8+1+2+3)×3=14×3=42A_3 = (8 + 1 + 2 + 3) \times 3 = 14 \times 3 = 42 și A4=6A_4 = 6. Singura secvență cu suma mai mică sau egală ca 20 este secvența [4,4][4, 4], deci răspunsul este 1.
Întrebarea 2: L=1L = 1, i=4i = 4, maxVal=16maxVal = 16.
A1=2×2=4,A2=2×2=4,A3=3×3=9,A4=1×1=1A_1 = 2 \times 2 = 4, A_2 = 2 \times 2 = 4, A_3 = 3 \times 3 = 9, A_4 = 1 \times 1 = 1.
Lungimea maximă a unei secvențe de mapate este 3, găsită pentru secvența [2,4][2, 4], deci răspunsul este 3.

Exemplul 2

mapat.in

4 4 0 2
1 3 5 2
4 3 1 2
7 8 1 1
2 2 3 1
2 2 5 30
1 4 7 16

mapat.out

2
5

Explicație

Avem p=2p = 2 întrebări de tipul 2:
Întrebarea 1: L=2L = 2, i=2i = 2, minVal=5minVal = 5, maxVal=30maxVal = 30. Avem A2=33A_2 = 33, A3=12A_3 = 12, A4=20A_4 = 20. Secvențele de mapate cu suma cuprinsă între minValminVal și maxValmaxVal sunt cele care au capetele la pozițiile [3,3][3, 3] și [4,4][4, 4], deci răspunsul este 2.
Întrebarea 2: L=1L = 1, i=4i = 4, minVal=7minVal = 7, maxVal=16maxVal = 16.
A1=4,A2=4,A3=9,A4=1A_1 = 4, A_2 = 4, A_3 = 9, A_4 = 1. Secvențele de mapate cu suma cuprinsă între minValminVal și maxValmaxVal sunt cele care au capetele la pozițiile: [1,2],[2,3],[2,4],[3,3][1, 2], [2, 3], [2, 4], [3, 3] și [3,4][3, 4], deci răspunsul este 5.

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