Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ASMx64-2018 Zaletavanje C++ 100/100OK 19. apr '18 @ 19:45

Test Točke Porabljen spomin Porabljen čas Status
#1 14/14 3,141 MiB 0,004 s OK
#2 14/14 3,141 MiB 0,004 s OK
#3 14/14 3,000 MiB 0,000 s OK
#4 14/14 2,996 MiB 0,004 s OK
#5 14/14 2,996 MiB 0,004 s OK
#6 15/15 3,141 MiB 0,004 s OK
#7 15/15 3,176 MiB 0,000 s OK

Ocenjevani program (Zaletavanje.cpp):
#include <iostream>
#include <queue>
#include <functional>
using namespace std;

priority_queue<pair<int, pair<int, int> >, vector<pair<int, pair<int, int> > >,
		greater<pair<int, pair<int, int> > > > pq;

int Abs(int x) {
	if (x < 0)
		return -x;
	return x;
}

struct Avto {
	int x, y;
	int index;
	char smer;
} avto[102];

int indexAvta[102];

int main() {
	int N, W, H;
	pair<int, pair<int, int> > pr;
	cin >> N >> W >> H;

	for (int i = 0; i < N; i++) {
		cin >> avto[i].smer >> avto[i].x >> avto[i].y;
		indexAvta[i] = i;
		avto[i].index = i;
	}

	for (int i = 0; i < N; i++) {
		for (int j = i+1; j < N; j++) {
			if (i == j)
				continue;
			if (avto[i].x - avto[j].x == avto[j].y - avto[i].y
					&& avto[i].smer != avto[j].smer) {
				if((avto[i].smer == 'G' && avto[i].y < avto[j].y) || (avto[j].smer == 'G' && avto[j].y < avto[i].y)){
				pr.first = Abs(avto[i].x - avto[j].x);
				/*	if(avto[i].smer == 'D'){
				 pr.second.first = avto[i].x + Abs(avto[i].x - avto[j].x);
				 pr.second.second = avto[i].y;
				 }

				 else{
				 pr.second.first = avto[i].x ;
				 pr.second.second = avto[i].y+ Abs(avto[i].x - avto[j].x);
				 }*/
				pr.second.first = i;
				pr.second.second = j;
				pq.push(pr);
				}
			}
		}
	}
	//cout<< "SIZE " << pq.size()<<endl;

	int in1, in2;
	while (!pq.empty()) {
		in1 = avto[pq.top().second.first].index;
		in2 = avto[pq.top().second.second].index;
		swap(indexAvta[in1],indexAvta[in2]);
		avto[indexAvta[in1]].index = in1;
		avto[indexAvta[in2]].index = in2;
		//indexAvta[pq.top()]
		//cout << "Trk : " << pq.top().second.first << pq.top().second.second<< endl;
		//cout << "Trk : " << indexAvta[pq.top().second.first]	<< indexAvta[pq.top().second.second] << endl;
		pq.pop();
	}

	//for(int i = 0; i < N; i++)
	//	cout <<indexAvta[i]<< endl;
	//cout<<endl<<endl;

		for (int j = 0; j < N; j++) {

				if (avto[indexAvta[j]].smer == 'D')
					cout << W << ' ' << avto[indexAvta[j]].y << '\n';
				else
					cout << avto[indexAvta[j]].x << ' ' << H << '\n';
			}

	return 0;
}