Submission #1022330

#TimeUsernameProblemLanguageResultExecution timeMemory
1022330vjudge1Nuclearia (CEOI15_nuclearia)C++14
26 / 100
1065 ms276564 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int MAX_N = 200005;
const int MOD = 998244353;

vector<vector<int>>grid, pref;

void solve() {
    int w, h;
    cin >> w >> h;
    grid.assign(w, vector<int>(h, 0));
    pref.assign(w, vector<int>(h, 0));
    int n;
    cin >> n;
    for(int i=0; i<n; ++i) {
        int x, y, a, b;
        cin >> x >> y >> a >> b;
        --x, --y;
        int cnt = a/b;
        for(int j=max(0LL, x-cnt); j<=min(w-1, x+cnt); ++j) {
            for(int k=max(0LL, y-cnt); k<=min(h-1, y+cnt); ++k) {
                grid[j][k] += max(0LL,a - b * max(abs(k-y), abs(j-x)));
            }
        }
    }
    for(int i=w-1; i>=0; --i) {
        for(int j=h-1; j>=0; --j) {
            pref[i][j] = grid[i][j];
            if(j+1<h) pref[i][j] += pref[i][j+1];
            if(i+1<w) pref[i][j] += pref[i+1][j];
            if(i+1<w && j+1<h) pref[i][j] -= pref[i+1][j+1];
        }
    }
    int q;
    cin >> q;
    while(q--) {
        long double x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        --x1, --y1, --x2, --y2;
        long double sum = pref[x1][y1];
        if(x2+1<w) sum -= pref[x2+1][y1];
        if(y2+1<h) sum -= pref[x1][y2+1];
        if(x2+1<w && y2+1<h) sum += pref[x2+1][y2+1];
        long double x = sum/((x2-x1+1)*(y2-y1+1));
        cout << lround(x) << endl;
    }
}

signed main() {
    int t = 1;
    while(t--) solve();

    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...