Submission #1243345

#TimeUsernameProblemLanguageResultExecution timeMemory
1243345allin27xMosaic (IOI24_mosaic)C++20
5 / 100
95 ms89928 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long


const int N = 2e5+5;
const int K = 50;

int vert[N][K];
int horz[K][N];


vector<long long> mosaic(vector<signed> X, vector<signed> Y, vector<signed> T, vector<signed> B, vector<signed> L, vector<signed> R) {
	int n = X.size();
	for (int i=0; i<n; i++) horz[1][i+1] = X[i];
	for (int i=0; i<n; i++) vert[i+1][1] = Y[i];
	for (int i=0; i<min(n, K-1); i++) horz[i+1][1] = Y[i];
	for (int i=0; i<min(n, K-1); i++) vert[1][i+1] = X[i];
	for (int i=2; i<K; i++) {
		for (int j=2; j<=n; j++) {
			vert[j][i] = !vert[j-1][i] && !vert[j][i-1];
			horz[i][j] = !horz[i-1][j] && !horz[j][j-1];
		}
	}
	vector<int> res((int)T.size(), 0);
	for (int q=0; q<T.size(); q++) {
		int t = T[q]+1; int b=B[q]+1; int l=L[q]+1; int r=R[q]+1;
		for (int i=t; i<=b; i++) {
			for (int j=l; j<=r; j++) {
				res[q] += vert[i][j];
			}
		}
	}
	return res;
}



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