Submission #130784

# Submission time Handle Problem Language Result Execution time Memory
130784 2019-07-16T05:18:20 Z nandonathaniel Nuclearia (CEOI15_nuclearia) C++14
15 / 100
1000 ms 203964 KB
#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=(pref[y2]-pref[y1])/(y2-y1+1);
			LL sisa=(pref[y2]-pref[y1])/(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 time Memory Grader output
1 Incorrect 198 ms 196088 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 194 ms 196156 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 311 ms 20216 KB Output is correct
2 Correct 79 ms 2808 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 313 ms 24864 KB Output is correct
2 Correct 82 ms 2704 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 304 ms 197768 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 182 ms 80320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 438 ms 22628 KB Output is correct
2 Correct 85 ms 3064 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 444 ms 45908 KB Output is correct
2 Correct 84 ms 2744 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 402 ms 203868 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Incorrect 425 ms 203964 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1071 ms 26552 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1063 ms 26356 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1066 ms 27068 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1072 ms 26616 KB Time limit exceeded
2 Halted 0 ms 0 KB -