Rezultati

Up. imeNalogaJezikRezultatČas oddaje
attempterji-2019 Moderna umetnost C++ 100/100OK 09. maj '19 @ 19:31

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 20/20 3,266 MiB 0,004 s OK
#2 [več] 20/20 3,066 MiB 0,004 s OK
#3 [več] 20/20 3,063 MiB 0,004 s OK
#4 [več] 20/20 3,063 MiB 0,004 s OK
#5 [več] 20/20 3,281 MiB 0,010 s OK

Ocenjevani program (ModernaUmetnost.cpp):
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstring>
#include <time.h>

void printSlika(std::vector<std::string> &slika, std::string border) {
	std::cout << border;
	for (long long int i = 0; i < slika.size(); i++) {
		std::cout << '|' << slika[i] << "|\n";
	}
	std::cout << border;
}

void color(std::vector<std::string>& slika, long long int k, long long int j) {
	char znak = slika[j][k];
	if (znak == ' ') slika[j][k] = '.';
	else if(znak == '.') slika[j][k] = ':';
	else if(znak == ':') slika[j][k] = '-';
	else if(znak == '-') slika[j][k] = '=';
	else if(znak == '=') slika[j][k] = '+';
	else if(znak == '+') slika[j][k] = '*';
	else if(znak == '*') slika[j][k] = '$';
	else if(znak == '$') slika[j][k] = '#';
	else if(znak == '#') slika[j][k] = '%';
	else if(znak == '%') slika[j][k] = '@';
	else if(znak == '@') slika[j][k] = '@';
}

int main()
{
	std::vector<std::vector<long long int>> koordinate;
	std::vector<std::string> slika;

	long long int w, h, n;
	std::cin >> w; //INPUT PLATNO
	std::cin >> h;
	std::cin >> n;

	long long int a, b, c, d;
	for (long long int i = 0; i < n; i++) {  //INPUT KOORDINATE
		std::cin >> a;
		std::cin >> b;
		std::cin >> c;
		std::cin >> d;
		std::vector<long long int>temp = { a,b,c,d };
		koordinate.push_back(temp);
	}
	for (long long int i = 0; i < h; i++) { //FILL SLIKA WITH BLANK
		std::string row = "";
		for (long long int j = 0; j < w; j++) {
			row += ' ';
		}
		slika.push_back(row);
	}
	long long int cntr = 0;
	for (long long int i = 0; i < n; i++) { //COLOR
		std::vector<long long int>row = koordinate[i];
		long long int a = row[0]; //x1
		long long int b = row[1]; //y1
		long long int c = row[2]; //x2
		long long int d = row[3]; //y2

		long long int minx, maxx;
		long long int miny, maxy;
		if (a > c) { minx = c; maxx = a; }
		else { minx = a; maxx = c; }
		if (b > d) { maxy = b, miny = d; }
		else { maxy = d; miny = b; }

		if (!((a < 1 && c < 1) || (a > w && c > w) || (b < 1 && d < 1) || (b > h && d >h))) cntr++;

		if (miny < 1) miny = 1;
		if (maxy > h) maxy = h;
		if (minx < 1) minx = 1;
		if (maxx > w) maxx = w;

		for (long long int j = maxy; j >= miny; j--) {
			for (long long int k = minx; k <= maxx; k++) {
				color(slika, k-1, j-1);
			}
		}
	}
	std::string border = "+";
	for (long long int i = 0; i < w; i++) border+= "-";
	border += "+\n";
	printSlika(slika,border); //PRINT
	std::cout << cntr << " pravokotnikov na belem";

	return 0;
}