Rezultati

Up. imeNalogaJezikRezultatČas oddaje
vlakectomaz-2018 Kvadrat števil C++ 100/100OK 13. okt '18 @ 13:17

Test Točke Porabljen spomin Porabljen čas Status
#1 10/10 3,039 MiB 0,000 s OK
#2 10/10 3,035 MiB 0,000 s OK
#3 10/10 3,043 MiB 0,000 s OK
#4 10/10 3,047 MiB 0,000 s OK
#5 10/10 3,082 MiB 0,000 s OK
#6 10/10 3,078 MiB 0,000 s OK
#7 10/10 3,207 MiB 0,019 s OK
#8 10/10 3,211 MiB 0,019 s OK
#9 10/10 3,355 MiB 0,013 s OK
#10 10/10 3,355 MiB 0,031 s OK

Ocenjevani program (kvadrat.cc):
#include <iostream>
#include <queue>
using namespace std;

struct element{
	int visina;
	int obiskan;
};

struct par{ int x; int y; } par_t;

par par_make(int x, int y){ par a; a.x=x; a.y=y; return a; }

int tabelaN,smeriN=4;
element tabela[105][105];
par smeri[4];

priority_queue <int> visine;

int main(){
smeri[0].x=0; smeri[0].y=-1;
smeri[1].x=0; smeri[1].y=1;
smeri[2].x=1; smeri[2].y=0;
smeri[3].x=-1; smeri[3].y=0;

	int i,j,k;
	cin >> tabelaN;
	
	for(i=0;i<tabelaN;i++){
		for(j=0;j<tabelaN;j++){
			//INIT TABELA
			tabela[i][j].obiskan=0;
			cin >> k;
			visine.push(k);
		}
	}
	
	// TEST VRSTNEGA REDA, default max to min :)
	/*
	for(i=0;i<tabelaN*tabelaN;i++){
		cout << visine.top() << endl;
		visine.pop();
	}
	*/
	
	// iskanje v sirino
	queue <par> Q;
	Q.push(par_make(tabelaN/2, tabelaN/2));
	tabela[tabelaN/2][tabelaN/2].obiskan=1;
	tabela[tabelaN/2][tabelaN/2].visina=visine.top();
	visine.pop();
	
	while(1){
		if(Q.empty())break;
		par_t=Q.front();
		Q.pop();
		
		//SMERI
		for(i=0;i<smeriN;i++){
			int xx=smeri[i].x+par_t.x;
			int yy=smeri[i].y+par_t.y;
			if(xx>=0 && xx<tabelaN && yy>=0 && yy<tabelaN){
				if(tabela[xx][yy].obiskan==0){
					tabela[xx][yy].visina=visine.top();
					visine.pop();
					tabela[xx][yy].obiskan=1;
					Q.push(par_make(xx,yy));
				}
			}
		}
	}
	
	// PRINT
	for(i=0;i<tabelaN;i++){
		for(j=0;j<tabelaN;j++){
			if(j+1<tabelaN)cout << tabela[i][j].visina << " ";
			else cout << tabela[i][j].visina << endl;
		}
	}
	
	return 0;
}