Submission #1235847

#TimeUsernameProblemLanguageResultExecution timeMemory
1235847repsakMosaic (IOI24_mosaic)C++20
8 / 100
81 ms11336 KiB
#include "mosaic.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

vector<long long> mosaic(vector<int> X, vector<int> Y, vector<int> T, vector<int> B, vector<int> L, vector<int> R) {
	int N = (int)X.size();
	int Q = (int)T.size();

	// vector<ll> prefix(N + 1);
	// for(int i = 1; i <= N; i++){
	// 	prefix[i] = prefix[i - 1] + X[i - 1];

	// srand(time(0));
	// N = 100;
	// Q = 10000;

	// T.resize(Q); L.resize(Q); R.resize(Q); B.resize(Q);


	// for(int i = 0; i < Q; i++){
	// 	T[i] = rand() % 10; 
	// 	B[i] = T[i] + rand() % (N - T[i]);
	// 	L[i] = rand() % 10; 
	// 	R[i] = L[i] + rand() % (N - L[i]);
	// }

	// vector<vector<int>> grid(N, vector<int>(N));

	// for(int i = 0; i < N; i++){
	// 	grid[0][i] = 0;
	// 	grid[i][0] = 0;
	// }


	// for(int y = 1; y < N; y++){
	// 	for(int x = 1; x < N; x++){
	// 		int color = grid[y][x - 1] == 0 && grid[y - 1][x] == 0 ? 1 : 0; 
	// 		grid[y][x] = color;
	// 	}
	// }

	vector<ll> r(Q);
	// vector<ll> s(Q);

	// for(int i = 0; i < Q; i++){
	// 	ll amount = 0;
	// 	for(int y = T[i]; y <= B[i]; y++){
	// 		for(int x = L[i]; x <= R[i]; x++){
	// 			if(grid[y][x] == 1) amount++;
	// 		}
	// 	}
	// 	s[i] = amount;

	// }

	for(int i = 0; i < Q; i++){

		if(T[i] == 0 && B[i] == 0 || L[i] == 0 && R[i] == 0){
			r[i] == 0;
			// if(s[i] != r[i]){
			// 	cout << "now";
			// }
			continue;
		}

		ll top = max(1, T[i]);
		ll bottom = max(1, B[i]);
		ll left = max(1, L[i]);
		ll right = max(1, R[i]);

		ll rows = bottom - top + 1;
		ll columns = right - left + 1;

		if(rows % 2 == 0 || columns % 2 == 0){
			r[i] = (columns * rows) / 2;
			// if(s[i] != r[i]){
			// 	cout << "now";
			// }
			continue;
		}

		ll additional = top % 2 == left % 2 || bottom % 2 == right % 2 ? 1 : 0;
		r[i] = floor(rows * columns / 2) + additional;
		// if(s[i] != r[i]){
		// 	cout << "now";
		// }

		// r[i] = prefix[R[i] + 1] - prefix[L[i]];
	}

	// for(int i = 0; i < r.size(); i++){
	// 	if(r[i] != s[i]){
	// 		cout << "here";
	// 	}else{
	// 		cout << r[i] << " ";
	// 	}
	// }

  	return r;
}

// #include "grader.cpp"
#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...