CSES - UKIEPC 2017 - Results
Submission details
Task:GentleBots
Sender:Hannes Ihalainen
Submission time:2017-10-31 18:50:19 +0200
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.05 sdetails
#4ACCEPTED0.06 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.04 sdetails
#7ACCEPTED0.05 sdetails
#8ACCEPTED0.04 sdetails
#9ACCEPTED0.04 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
struct P {
	int x, y, z;
	bool operator==(const P & other)const{ return(x == other.x && y == other.y &&
			z == other.z);};
	bool operator!=(const P & other)const{ return!(x == other.x && y == other.y &&
			z == other.z);};
};
bool ok(P b1, P e1, P b2, P e2) {
	if(e1 == e2) return 0;
	if(b1 == e2 && b2 == e1) return 0;
	return 1;
}
void print(P a, P b) {
	cout<<'('<<a.x<<' '<<a.y<<' '<<a.z<<") ("<<b.x<<' '<<b.y<<' '<<b.z<<")\n";
}
int main() {
	P s1, s2, g1, g2;
	cin>>s1.x>>s1.y>>s1.z>>g1.x>>g1.y>>g1.z;
	cin>>s2.x>>s2.y>>s2.z>>g2.x>>g2.y>>g2.z;
	srand(time(0));
	print(s1, s2);
	while(s1 != g1 || s2 != g2) {
		int fail = 1;
		P e1 = s1;
		P e2 = s2;
		int dx = g1.x-e1.x;
		dx /= max(abs(dx), 1);
		int dy = g1.y-e1.y;
		dy /= max(abs(dy), 1);
		int dz = g1.z-e1.z;
		dz /= max(abs(dz), 1);

		if(dx) e1.x += dx;
		else if(dy) e1.y += dy;
		else e1.z += dz;
		dx = g2.x-e2.x;
		dx /= max(1, abs(dx));
		dy = g2.y-e2.y;
		dy /= max(1, abs(dy));
		dz = g2.z-e2.z;
		dz /= max(1, abs(dz));
		if(dx) e2.x += dx;
		else if(dy) e2.y += dy;
		else e2.z += dz;
		if(ok(s1, e1, s2, e2)) {
			s1 = e1;
			s2 = e2;
			print(s1, s2);
			fail = 0;
		}
		if(fail) {
		//	print(e1, e2);
		//	cout<<"LOL"<<endl;
			for(int i = 0; i < 100; ++i) {
				P e1 = s1;
				P e2 = s2;
				int q = rand()%6;
				if(q == 0) e1.x++;
				if(q == 1) e1.x--;
				if(q == 2) e1.y++;
				if(q == 3) e1.y--;
				if(q == 4) e1.z++;
				if(q == 5) e1.z--;
				q = rand()%6;
				if(q == 0) e2.x++;
				if(q == 1) e2.x--;
				if(q == 2) e2.y++;
				if(q == 3) e2.y--;
				if(q == 4) e2.z++;
				if(q == 5) e2.z--;
				if(ok(s1, e1, s2, e2)) {
					s1 = e1;
					s2 = e2;
					print(s1, s2);
				}
			}
		}
	}

}

Test details

Test 1

Verdict: ACCEPTED

input
0 0 -1 0 0 1
0 0 1 0 0 -1

correct output
(0 0 -1) (0 0 1)
(0 0 0) (1 0 1)
(0 0 1) (1 0 0)
(0 0 1) (1 0 -1)
(0 0 1) (0 0 -1)

user output
(0 0 -1) (0 0 1)
(0 0 0) (1 0 1)
(0 1 0) (1 0 0)
(0 1 -1) (1 -1 0)
(0 1 -2) (0 -1 0)
...

Test 2

Verdict: ACCEPTED

input
-124 223 38 -321 90 -17
274 -265 -332 -145 240 75

correct output
(-124 223 38) (274 -265 -332)
(-125 223 38) (273 -265 -332)
(-126 223 38) (272 -265 -332)
(-127 223 38) (271 -265 -332)
(-128 223 38) (270 -265 -332)
...

user output
(-124 223 38) (274 -265 -332)
(-125 223 38) (273 -265 -332)
(-126 223 38) (272 -265 -332)
(-127 223 38) (271 -265 -332)
(-128 223 38) (270 -265 -332)
...

Test 3

Verdict: ACCEPTED

input
32 -397 -21 378 218 173
36 -344 365 -113 -331 372

correct output
(32 -397 -21) (36 -344 365)
(33 -397 -21) (35 -344 365)
(34 -397 -21) (34 -344 365)
(35 -397 -21) (33 -344 365)
(36 -397 -21) (32 -344 365)
...

user output
(32 -397 -21) (36 -344 365)
(33 -397 -21) (35 -344 365)
(34 -397 -21) (34 -344 365)
(35 -397 -21) (33 -344 365)
(36 -397 -21) (32 -344 365)
...

Test 4

Verdict: ACCEPTED

input
-309 -252 245 -347 -277 -152
357 97 271 -145 68 -241

correct output
(-309 -252 245) (357 97 271)
(-310 -252 245) (356 97 271)
(-311 -252 245) (355 97 271)
(-312 -252 245) (354 97 271)
(-313 -252 245) (353 97 271)
...

user output
(-309 -252 245) (357 97 271)
(-310 -252 245) (356 97 271)
(-311 -252 245) (355 97 271)
(-312 -252 245) (354 97 271)
(-313 -252 245) (353 97 271)
...

Test 5

Verdict: ACCEPTED

input
193 -177 210 -212 -154 -298
-258 -125 -76 -153 -204 243

correct output
(193 -177 210) (-258 -125 -76)
(192 -177 210) (-257 -125 -76)
(191 -177 210) (-256 -125 -76)
(190 -177 210) (-255 -125 -76)
(189 -177 210) (-254 -125 -76)
...

user output
(193 -177 210) (-258 -125 -76)
(192 -177 210) (-257 -125 -76)
(191 -177 210) (-256 -125 -76)
(190 -177 210) (-255 -125 -76)
(189 -177 210) (-254 -125 -76)
...

Test 6

Verdict: ACCEPTED

input
1 0 0 0 0 50
0 0 0 1 0 50

correct output
(1 0 0) (0 0 0)
(1 0 1) (1 0 0)
(0 0 1) (1 0 1)
(0 0 2) (1 0 2)
(0 0 3) (1 0 3)
...

user output
(1 0 0) (0 0 0)
(2 0 0) (0 -1 0)
(2 0 -1) (0 -1 -1)
(3 0 -1) (0 0 -1)
(4 0 -1) (0 0 0)
...

Test 7

Verdict: ACCEPTED

input
952 0 0 952 0 0
953 0 0 951 0 0

correct output
(952 0 0) (953 0 0)
(952 0 -1) (952 0 0)
(952 0 0) (951 0 0)

user output
(952 0 0) (953 0 0)
(952 0 1) (954 0 0)
(952 1 1) (954 0 -1)
(952 1 0) (954 -1 -1)
(952 1 -1) (953 -1 -1)
...

Test 8

Verdict: ACCEPTED

input
950 0 0 952 0 0
951 0 0 951 0 0

correct output
(950 0 0) (951 0 0)
(950 0 -1) (951 0 0)
(951 0 -1) (951 0 0)
(952 0 -1) (951 0 0)
(952 0 0) (951 0 0)

user output
(950 0 0) (951 0 0)
(950 0 1) (952 0 0)
(950 1 1) (952 0 -1)
(950 1 0) (952 -1 -1)
(950 1 -1) (951 -1 -1)
...

Test 9

Verdict: ACCEPTED

input
-500 -500 -500 500 500 500
-500 -501 -500 500 499 500

correct output
(-500 -500 -500) (-500 -501 -5...

user output
(-500 -500 -500) (-500 -501 -5...