Submission #384169

#TimeUsernameProblemLanguageResultExecution timeMemory
384169patrikpavic2Red-blue table (IZhO19_stones)C++17
100 / 100
53 ms5484 KiB
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 1e3 + 50;

bool jako_dobar(int r, int s, int x, int y){
	x = max(x, 0), y = max(y, 0);
	if(x > s || y > r) return 0;
	if(!s || !r) return 1;
	return (r * x + s - 1) / s <= r - y;
}

bool dobar(int n, int m, int a, int b){
	return jako_dobar(a, b, (m + 2) / 2 - (m - b), (n + 2) / 2 - (n - a));
}

int A[N][N];

void construct(int n, int m, int a, int b){
	for(int i = 0;i < n;i++){
		for(int j = 0;j < m;j++)
			A[i][j] = (j >= b);
	}
	int r = a, s = b, x = (m + 2) / 2 - (m - b);
	int cur = 0;
	for(int i = 0;i < r;i++){
		for(int j = 0;j < x;j++){
			A[i][cur] = 1;
			cur = (cur + 1) % s;
		}
	}
	printf("%d\n", a + b);
	for(int i = 0;i < n;i++){
		for(int j = 0;j < m;j++)
			printf(A[i][j] ? "+" : "-");
		printf("\n");
	}
}

int main(){
	int T; scanf("%d", &T);
	for(;T--;){
		int n, m; scanf("%d%d", &n, &m);
		int A = 0, B = 0;
		for(int a = 0;a <= n;a++)
			for(int b = 0;b <= m;b++)
				if(a + b > A + B && dobar(n, m, a, b))
					A = a, B = b;
		construct(n, m, A, B);
	}
	return 0;
}

Compilation message (stderr)

stones.cpp: In function 'int main()':
stones.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   43 |  int T; scanf("%d", &T);
      |         ~~~~~^~~~~~~~~~
stones.cpp:45:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   45 |   int n, m; scanf("%d%d", &n, &m);
      |             ~~~~~^~~~~~~~~~~~~~~~
#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...