Submission #386902

#TimeUsernameProblemLanguageResultExecution timeMemory
386902FatihSolakNuclearia (CEOI15_nuclearia)C++17
0 / 100
1096 ms239072 KiB
#include <bits/stdc++.h> using namespace std; void solve(){ bool swp = 0; int w,h; cin >> w >> h; if(w < h){ swp = 1; swap(w,h); } long long arr[h+5][h+w+5]; long long pre[h+5][h+w+5]; for(int i=0;i<h+5;i++){ for(int j = 0;j<h+w+5;j++){ arr[i][j] = pre[i][j] = 0; } } int n; cin >> n; for(int i=0;i<n;i++){ int x,y,a,b; cin >> x >> y >> a >> b; if(swp)swap(x,y); x += h; for(int i=1;i<=h;i++){ int dif = abs(y-i); if(dif * b > a)continue; arr[i][max(1,x-dif+1)] -= b; arr[i][max(1,x-(a/b)+1)] += b; arr[i][max(1,x-(a/b))] += a - b*(x - max(1,x-(a/b))); arr[i][max(1,x-(a/b)) + 1] -= a - b*(x - max(1,x-(a/b))); arr[i][min(w+h+1,x+dif+1)] -= b; arr[i][min(w+h+1,x+(a/b)+1)] += b; arr[i][min(w+h+1,x+(a/b)+1)] -= a%b; } } for(int i=1;i<=h;i++){ for(int j=1;j<=w+h;j++){ arr[i][j] += arr[i][j-1]; } } for(int i=1;i<=h;i++){ for(int j=1;j<=w+h;j++){ arr[i][j] += arr[i][j-1]; } } for(int i=1;i<=h;i++){ for(int j=h+1;j<=w+h;j++){ pre[i][j] = pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1]+arr[i][j]; } } int q; cin >> q; while(q--){ int x1,y1,x2,y2; cin >> x1 >> y1 >> x2 >> y2; if(!swp)swap(x1,y1),swap(x2,y2); y1 += h; y2 += h; long double cnt = (x2-x1+1) * (y2 -y1+1); cout <<(long long) ((pre[x2][y2] - pre[x2][y1-1] - pre[x1 -1][y2] + pre[x1-1][y1-1])/cnt + 0.5) << endl; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifdef Local freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t=1; //cin>>t; while(t--){ solve(); } #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#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...