# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
462297 | 2021-08-10T10:32:12 Z | kingfran1907 | Nuclearia (CEOI15_nuclearia) | C++14 | 1000 ms | 186848 KB |
#include <bits/stdc++.h> #define X first #define Y second using namespace std; typedef long long llint; const int maxn = 3e6+10; const int base = 31337; const int mod = 1e9+7; const int inf = 0x3f3f3f3f; const int logo = 18; const int off = 1 << logo; const int treesiz = off << 1; int n, q; int w, h; vector< llint > niz[maxn]; vector< llint > pref[maxn]; llint ac[maxn]; llint pr[maxn]; int main() { scanf("%d%d", &w, &h); if (h == 1) { scanf("%d", &n); for (int i = 0; i < n; i++) { int x, y; llint a, b; scanf("%d%d%lld%lld", &x, &y, &a, &b); llint dis = a / b; int l = max(1LL, x - dis); int r = min((llint)w, x + dis); pr[l - 1] += a - b * (x - l); pr[l] -= a - b * (x - l); pr[l] += b; pr[x] -= b + b; pr[r] -= a - b * (r - x); pr[r] += b; pr[r + 1] += a - b * (r - x); } llint tren = pr[0]; for (int i = 1; i <= w; i++) { ac[i] = ac[i - 1] + tren; tren += pr[i]; } //for (int i = 1; i <= w; i++) printf("%lld ", ac[i]); //printf("\n"); for (int i = 1; i <= w; i++) ac[i] += ac[i - 1]; scanf("%d", &q); while (q--) { int x1, y1, x2, y2; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); llint sum = ac[x2] - ac[x1 - 1]; llint cnt = x2 - x1 + 1; llint sol = sum / cnt; llint rem = sum % cnt; if (rem * 2 >= cnt) printf("%lld\n", sol + 1); else printf("%lld\n", sol); } return 0; } for (int i = 0; i < w; i++) for (int j = 0; j < h; j++) niz[i].push_back(0); scanf("%d", &n); while (n--) { int x, y; llint a, b; scanf("%d%d%lld%lld", &x, &y, &a, &b); x--, y--; for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { int dis = max(abs(i - x), abs(j - y)); llint kol = max(0LL, a - b * dis); niz[i][j] += kol; } } } for (int i = 0; i <= w; i++) { for (int j = 0; j <= h; j++) { pref[i].push_back(0); } } for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { pref[i + 1][j + 1] = niz[i][j]; pref[i + 1][j + 1] += pref[i + 1][j]; } } for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { pref[i + 1][j + 1] += pref[i][j + 1]; } } scanf("%d", &q); while (q--) { int x1, y1, x2, y2; scanf("%d%d%d%d", &x1, &y1, &x2, &y2); x1--, y1--; llint sum = pref[x2][y2] - pref[x1][y2] - pref[x2][y1] + pref[x1][y1]; llint cnt = (llint)(x2 - x1) * (y2 - y1); llint sol = sum / cnt; llint rem = sum % cnt; if (rem * 2 >= cnt) printf("%lld\n", sol + 1); else printf("%lld\n", sol); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 100 ms | 160952 KB | Output is correct |
2 | Correct | 167 ms | 143504 KB | Output is correct |
3 | Correct | 168 ms | 143124 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 114 ms | 160960 KB | Output is correct |
2 | Correct | 190 ms | 143564 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 350 ms | 181396 KB | Output is correct |
2 | Correct | 163 ms | 143556 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 320 ms | 181908 KB | Output is correct |
2 | Correct | 173 ms | 143572 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 244 ms | 162968 KB | Output is correct |
2 | Correct | 174 ms | 143692 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 223 ms | 152032 KB | Output is correct |
2 | Correct | 168 ms | 143504 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 485 ms | 186848 KB | Output is correct |
2 | Correct | 172 ms | 143784 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 656 ms | 182760 KB | Output is correct |
2 | Correct | 167 ms | 143580 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 350 ms | 182728 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 374 ms | 182708 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1079 ms | 161280 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1085 ms | 161220 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1087 ms | 161412 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1094 ms | 161220 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |