CSES - Datatähti 2021 alku - Results
Submission details
Task:Ratsun reitit
Sender:motsgar
Submission time:2020-10-03 11:25:14 +0300
Language:C++ (C++17)
Status:COMPILE ERROR

Compiler report

input/code.cpp:1:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning(disable: 4996)
 
input/code.cpp: In function 'int main()':
input/code.cpp:73:27: error: 'log10' was not declared in this scope
   if (i != 0) numLength = log10(outputInt[i]) + 1;
                           ^~~~~
input/code.cpp:76:3: error: 'itoa' was not declared in this scope
   itoa(outputInt[i], output, 10);
   ^~~~
input/code.cpp:76:3: note: suggested alternative: 'atol'
   itoa(outputInt[i], output, 10);
   ^~~~
   atol
input/code.cpp:82:3: warning: value computed is not used [-Wunused-value]
   *output++;
   ^~~~~~~~~
input/code.cpp:83:3: warning: value computed is not used [-Wunused-value]
   *output++;
   ^~~~~~~~~
input/code.cpp:84:3: warning: value computed is not used [-Wunused-value]
   *output++;
   ^~~~~~~~~
input/code.cpp:89:3: warning: value computed is not used [-Wunused-value]
   *output--;
   ^~~~~~~~~
input/code.cpp:90:3: warning: value computed is not used [-Wunused-...

Code

#pragma warning(disable: 4996)
#include <iostream>
#define maxSize 100

using namespace std;

char input[10];
char* output = new char[maxSize * maxSize * 3];
int outputInt[maxSize * maxSize];
int outputIntIndex = 0;

int main() {
	cin.getline(input, sizeof(input));

	int boardSize = 0;

	int j = 0;
	while (input[j] != '\0')
	{
		boardSize = boardSize * 10 + (input[j] - 48);
		j++;
	}

	int cellValue;
	for (int y = 0; y < boardSize; y++) {
		int startValue;
		int height = 0;
		if (y > 3) {
			startValue = y - (y / 4) * 2;
			height = (y - 4) / 2 + y % 2 * 2 + 4;
		}
		
		int shouldGrow = (y / 2) % 2;

		for (int x = 0; x <= y; x++) {
			if (y > 3 && x < height) {
				if (shouldGrow == 0) cellValue = startValue + x % 2;
				else cellValue = startValue - x % 2;
			} 
			else if (x == y) cellValue = ((x - 1) / 3) * 2 + 2;
			else if (y > 3 && x >= height && x < y)
			{
				if (y % 2 == 1) cellValue = x - ((x - height + 2) / 3) * 2 - 1;
				else cellValue = x - ((x - height + 2) / 3) * 2;
			}
			outputInt[y * boardSize + x] = cellValue;
			if (x != y) outputInt[x * boardSize + y] = cellValue;
		}
	}
	outputInt[0] = 0;
	outputInt[1] = 3;
	if (boardSize == 4)
	{
		outputInt[3] = 5;
		outputInt[3 * boardSize] = 5;
	}
	else
	{
		outputInt[3] = 3;
		outputInt[3 * boardSize] = 3;
	}
	outputInt[1 * boardSize + 0] = 3;
	outputInt[1 * boardSize + 1] = 4;
	outputInt[1 * boardSize + 2] = 1;
	outputInt[2 * boardSize + 1] = 1;
	outputInt[2 * boardSize + 2] = 4;
	outputInt[2 * boardSize + 3] = 3;
	outputInt[3 * boardSize + 2] = 3;

	for (int i = 0; i < boardSize * boardSize; i++)
	{
		int numLength;
		if (i != 0) numLength = log10(outputInt[i]) + 1;
		else numLength = 1;
		
		itoa(outputInt[i], output, 10);
		output[numLength] = ' ';
		
		if ((i + 1) % boardSize == 0) output[2] = '\n';
		else output[2] = ' ';

		*output++;
		*output++;
		*output++;
	}
	output[-1] = '\0';
	for (int i = 0; i < boardSize * boardSize; i++)
	{
		*output--;
		*output--;
		*output--;
	}

	printf("%s", output);

	exit(0);
}