Submission #259238

#TimeUsernameProblemLanguageResultExecution timeMemory
259238vioalbertNuclearia (CEOI15_nuclearia)C++14
30 / 100
1096 ms100868 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; int w, h, n, q; vector<vector<ll>> grid, pref; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> w >> h >> n; grid.assign(h+1, vector<ll>(w+1, 0)); pref.assign(h+1, vector<ll>(w+1, 0)); for(int i = 0; i < n; i++) { ll x, y, a, b; cin >> x >> y >> a >> b; for(int r = 1; r <= h; r++) { for(int c = 1; c <= w; c++) { grid[r][c] += max(0ll, a - b * (ll)max(abs(x - c), abs(y - r))); } } } for(int r = 1; r <= h; r++) { for(int c = 1; c <= w; c++) { pref[r][c] = pref[r-1][c] + pref[r][c-1] - pref[r-1][c-1] + grid[r][c]; } } cin >> q; while(q--) { ll r1, c1, r2, c2; cin >> c1 >> r1 >> c2 >> r2; // cerr << r1 << ' ' << c1 << ' ' << r2 << ' ' << c2 << '\n'; double ans = pref[r2][c2] - pref[r1-1][c2] - pref[r2][c1-1] + pref[r1-1][c1-1]; ans /= (r2 - r1 + 1) * (c2 - c1 + 1); cout << (ll)(ans+0.5) << '\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...