#include "quality.h"
#include "bits/stdc++.h"
using namespace std;
vector<int> _rbol, Jaja;
void Crear(int i, int d, int p){
if(i == d){
Jaja[i] = p;
return;
}
int P = (i + d) / 2;
Crear(i, P, p * 2);
Crear(P + 1, d, p * 2 + 1);
}
void Actualizar(int p, int o){
if(p == -0) return;
if(p == o) _rbol[p] = 1 - _rbol[p];
else _rbol[p] = _rbol[p * 2] + _rbol[p * 2 + 1];
Actualizar(p / 2, o);
}
int Consulta(int i, int d, int p, int v){
if(i == d) return i + 1;
int P = (i + d) / 2;
if(_rbol[p * 2] >= v) return Consulta(i, P, p * 2, v);
else return Consulta(P + 1, d, p * 2 + 1, v - _rbol[p * 2]);
}
int rectangle(int R, int C, int H, int W, int Q[3001][3001]){
int n = R * C, r = n, i = 0, j = 0, k = H - 1, l = W - 1;
_rbol.assign(n * 4 + 22, 0);
Jaja.assign(n, 0);
Crear(0, n - 1, 1);
bool Derecha = 1;
for(int m = 0; m < H; m++){
for(int o = 0; o < W; o++){
Actualizar(Jaja[Q[m][o] - 1], Jaja[Q[m][o] - 1]);
}
}
int Mediana = (H * W + 1) / 2;
r = min(Consulta(0, n - 1, 1, Mediana), r);
while(1){
//cerr<<i<<" "<<j<<"\n";
if(Derecha) l++;
else l--;
bool Bajar = 0;
if(l - W + 1 == -1 or l == C){
Bajar = 1;
if(Derecha) l--;
else l++;
k++;
if(k == R) break;
}
if(Bajar){
for(int cj = j; cj <= l; cj++){
Actualizar(Jaja[Q[i][cj] - 1], Jaja[Q[i][cj] - 1]);
Actualizar(Jaja[Q[k][cj] - 1], Jaja[Q[k][cj] - 1]);
}
i++;
Derecha = !Derecha;
} else {
if(Derecha){
for(int ci = i; ci <= k; ci++){
Actualizar(Jaja[Q[ci][j] - 1], Jaja[Q[ci][j] - 1]);
Actualizar(Jaja[Q[ci][l] - 1], Jaja[Q[ci][l] - 1]);
}
j++;
}
else {
for(int ci = i; ci <= k; ci++){
Actualizar(Jaja[Q[ci][j - 1] - 1], Jaja[Q[ci][j - 1] - 1]);
Actualizar(Jaja[Q[ci][l + 1] - 1], Jaja[Q[ci][l + 1] - 1]);
}
j--;
}
}
r = min(Consulta(0, n - 1, 1, Mediana), r);
}
return r;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |