제출 #1229610

#제출 시각아이디문제언어결과실행 시간메모리
1229610kaiboyNuclearia (CEOI15_nuclearia)C++20
25 / 100
1096 ms491112 KiB
#include <algorithm> #include <iostream> using namespace std; const int N = 2500000; long long *ddnw[N + 2], *ddne[N + 2], *ddsw[N + 2], *ddse[N + 2], *dd[N + 2]; int main() { int n, m, k; cin >> n >> m >> k; for (int i = 0; i <= n + 1; i++) { ddnw[i] = new long long[m + 2]; ddne[i] = new long long[m + 2]; ddsw[i] = new long long[m + 2]; ddse[i] = new long long[m + 2]; dd[i] = new long long[m + 2]; } while (k--) { int i, j, a, b; cin >> i >> j >> a >> b; int k = a / b, r = a % b; int il = max(i - k, 0), ir = min(i + 1 + k, n + 1); int jl = max(j - k, 0), jr = min(j + 1 + k, m + 1); ddnw[i][j] += b; ddnw[il][jl] -= b; ddne[i][j + 1] -= b; ddne[il][jr] += b; ddsw[i + 1][j] -= b; ddsw[ir][jl] += b; ddse[i + 1][j + 1] += b; ddse[ir][jr] -= b; dd[il][jl] += r; dd[il][jr] -= r; dd[ir][jl] -= r; dd[ir][jr] += r; } for (int i = n; i >= 0; i--) for (int j = m; j >= 0; j--) ddnw[i][j] += ddnw[i + 1][j + 1]; for (int i = n; i >= 0; i--) for (int j = 1; j <= m + 1; j++) ddne[i][j] += ddne[i + 1][j - 1]; for (int i = 1; i <= n + 1; i++) for (int j = m; j >= 0; j--) ddsw[i][j] += ddsw[i - 1][j + 1]; for (int i = 1; i <= n + 1; i++) for (int j = 1; j <= m + 1; j++) ddse[i][j] += ddse[i - 1][j - 1]; for (int i = 0; i <= n + 1; i++) for (int j = 0; j <= m + 1; j++) dd[i][j] += ddnw[i][j] + ddne[i][j] + ddsw[i][j] + ddse[i][j]; for (int i = 0; i <= n + 1; i++) for (int j = 1; j <= m + 1; j++) dd[i][j] += dd[i][j - 1]; for (int i = 1; i <= n + 1; i++) for (int j = 0; j <= m + 1; j++) dd[i][j] += dd[i - 1][j]; for (int i = 0; i <= n + 1; i++) for (int j = 1; j <= m + 1; j++) dd[i][j] += dd[i][j - 1]; for (int i = 1; i <= n + 1; i++) for (int j = 0; j <= m + 1; j++) dd[i][j] += dd[i - 1][j]; int q; cin >> q; while (q--) { int il, jl, ir, jr; cin >> il >> jl >> ir >> jr, il--, jl--; long long s = dd[ir][jr] - dd[ir][jl] - dd[il][jr] + dd[il][jl]; long long k = (ir - il) * (jr - jl), q = s / k, r = s % k; if (r >= (k + 1) / 2) q++; cout << q << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...