Submission #130787

#TimeUsernameProblemLanguageResultExecution timeMemory
130787nandonathanielNuclearia (CEOI15_nuclearia)C++14
15 / 100
1083 ms204876 KiB
#include<bits/stdc++.h> using namespace std; typedef long long LL; const LL MAXN=200005; LL x[MAXN],y[MAXN],a[MAXN],b[MAXN]; LL dist(LL ax,LL ay,LL bx,LL by){ return max(abs(ax-bx),abs(ay-by)); } LL ceiling(LL atas,LL bawah){ return (atas-1)/bawah+1; } int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); LL r,c,n,q,x1,y1,x2,y2; cin >> c >> r >> n; LL pref[r+5][c+5],prefA[c+5],prefB[c+5],sufA[c+5],sufB[c+5]; memset(pref,0,sizeof(pref)); memset(prefA,0,sizeof(prefA)); memset(prefB,0,sizeof(prefB)); memset(sufA,0,sizeof(sufA)); memset(sufB,0,sizeof(sufB)); for(LL i=1;i<=n;i++)cin >> y[i] >> x[i] >> a[i] >> b[i]; if(r==1){ for(LL i=1;i<=n;i++){ LL brp=ceiling(a[i],b[i]); prefA[y[i]]+=a[i]; prefB[y[i]]+=b[i]; if(y[i]+brp<=c){ prefA[y[i]+brp]-=(a[i]-brp*b[i]); prefB[y[i]+brp]-=b[i]; } } for(LL i=1;i<=c;i++){ prefA[i]+=(prefA[i-1]-prefB[i-1]); prefB[i]+=prefB[i-1]; } for(LL i=1;i<=n;i++){ LL brp=ceiling(a[i],b[i]); sufA[y[i]]+=a[i]; sufB[y[i]]+=b[i]; if(y[i]-brp>=1){ sufA[y[i]-brp]-=(a[i]-brp*b[i]); sufB[y[i]-brp]-=b[i]; } } for(LL i=c;i>=1;i--){ sufA[i]+=(sufA[i+1]-sufB[i+1]); sufB[i]+=sufB[i+1]; } for(LL i=1;i<=c;i++)prefA[i]+=sufA[i]; for(LL i=1;i<=n;i++)prefA[y[i]]-=a[i]; for(LL i=1;i<=c;i++)prefA[i]+=prefA[i-1]; cin >> q; while(q--){ cin >> y1 >> x1 >> y2 >> x2; LL bagi=(prefA[y2]-prefA[y1-1])/(y2-y1+1); LL sisa=(prefA[y2]-prefA[y1-1])/(y2-y1+1); if(sisa>=ceiling(y2-y1+1,2))bagi++; cout << bagi << '\n'; } return 0; } for(LL i=1;i<=r;i++){ for(LL j=1;j<=c;j++){ for(LL k=1;k<=n;k++)pref[i][j]+=max(0LL,a[k]-b[k]*dist(i,j,x[k],y[k])); } } for(LL i=1;i<=r;i++){ for(LL j=1;j<=c;j++){ pref[i][j]+=pref[i][j-1]+pref[i-1][j]-pref[i-1][j-1]; } } cin >> q; while(q--){ cin >> y1 >> x1 >> y2 >> x2; LL bagi=(pref[x2][y2]-pref[x1-1][y2]-pref[x2][y1-1]+pref[x1-1][y1-1])/((x2-x1+1)*(y2-y1+1)); LL sisa=(pref[x2][y2]-pref[x1-1][y2]-pref[x2][y1-1]+pref[x1-1][y1-1])%((x2-x1+1)*(y2-y1+1)); if(sisa>=ceiling((x2-x1+1)*(y2-y1+1),2))bagi++; cout << bagi << '\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...