제출 #110168

#제출 시각아이디문제언어결과실행 시간메모리
110168naoaiNuclearia (CEOI15_nuclearia)C++14
55 / 100
1083 ms43776 KiB
#include <bits/stdc++.h> using namespace std; typedef long long i64; const int nmax = 25e5; i64 sum[nmax + 1]; i64 ra[nmax + 1]; int main () { int w, h, n; cin >> w >> h >> n; if (h != 1) { i64 s[w+1][h+1]; memset(s, 0, sizeof(s)); for (int i = 1; i <= n; ++ i) { int x, y, a, b; cin >> x >> y >> a >> b; for (int j = 1; j <= w; ++ j) for (int k = 1; k <= h; ++ k) { int c = max(0LL, a - 1LL * b * max(abs(x - j), abs(y - k))); s[j][k] += c; } } for (int i = 1; i <= w; ++ i) for (int j = 1; j <= h; ++ j) s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1]; int q; cin >> q; for (int i = 1; i <= q; ++ i) { int a, b, x, y; cin >> a >> b >> x >> y; i64 total = s[x][y] - s[a - 1][y] - s[x][b - 1] + s[a - 1][b - 1]; i64 arie = (x - a + 1) * (y - b + 1); i64 r = total / arie; if (total % arie >= (arie + 1) / 2) ++ r; cout << r << "\n"; } } else if (h == 1) { for (int i = 1; i <= n; ++ i) { int x, y, a, b; cin >> x >> y >> a >> b; int pfin = min(w, x + a / b); sum[x] += a; sum[pfin + 1] -= a - b * (pfin - x); ra[x + 1] += -b; ra[pfin + 1] -= -b; pfin = max(1, x - a / b); if (pfin <= x - 1) { sum[pfin] += a - b * (x - pfin); sum[x] -= a - b; ra[pfin + 1] += b; ra[x] -= b; } } for (int i = 1; i <= w; ++ i) ra[i] += ra[i - 1]; for (int i = 1; i <= w; ++ i) sum[i] += sum[i - 1] + ra[i]; for (int i = 1; i <= w; ++ i) sum[i] += sum[i - 1]; int q; cin >> q; for (int i = 1; i <= q; ++ i) { int a, b, x, y; cin >> a >> b >> x >> y; i64 total = sum[x] - sum[a - 1]; i64 arie = (x - a + 1); i64 r = total / arie; if (total % arie >= (arie + 1) / 2) ++ r; cout << r << "\n"; } exit(0); } 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...