-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdiff_Main.cpp
More file actions
84 lines (80 loc) · 2.21 KB
/
Copy pathdiff_Main.cpp
File metadata and controls
84 lines (80 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
diff --git a/CodeJam/Main.cpp b/examples/2020/Round1B/A/Main.cpp
index 2150379..b792fd14 100644
--- a/CodeJam/Main.cpp
+++ b/examples/2020/Round1B/A/Main.cpp
@@ -1,11 +1,11 @@
-// #define DEFAULT_VAL_MODE //remove comment on this line, to activate default value trigger
+#define DEFAULT_VAL_MODE //remove comment on this line, to activate default value trigger
#define DEFAULT_VAL_TRIGGER result.sz == 0
#define DEFAULT_VAL "IMPOSSIBLE"
// #define IA_MODE //remove comment on this line, to activate interactive problem mode
#define IA_ERROR_CODE -1
#define IA_COMM_LOG //add comment on this line, to deactivate the interactive communication error log
// #define XY_NOTATION //remove commment on this line, to activate xy notation on complex numbers
-#define COMM_TYPE ll
+#define COMM_TYPE str
// The maintained and empty code template can be found at:
// https://github.com/demmerichs/CodeJamTemplate
@@ -1570,11 +1570,65 @@ void init(){
cin >> T;
}
+ll X, Y;
+
void readInput(){
+ cin >> X >> Y;
}
// write to COMM_TYPE result
void calcFunction() {
+ result = "";
+ str dirx = "WE";
+ str diry = "SN";
+ while(X!=0 || Y!= 0){
+ if(X<0){
+ X*=-1;
+ reverse(all(dirx));
+ }
+ if(Y<0){
+ Y*=-1;
+ reverse(all(diry));
+ }
+ if(X%2 == Y%2){
+ result = "";
+ return;
+ }
+ ll val = Y;
+ str dir=diry;
+ if(X%2){
+ dir=dirx;
+ val = X;
+ }
+ bool go_higher;
+ if((X>>1)%2 == (Y>>1)%2){
+ go_higher = false;
+ } else {
+ go_higher = true;
+ }
+ if(val == 1 && (X==0 || Y==0)){
+ go_higher = true;
+ }
+ if(go_higher){
+ result += dir[1];
+ if(dir==dirx){
+ X -= 1;
+ } else {
+ Y-= 1;
+ }
+ } else {
+ result += dir[0];
+ if(dir==dirx){
+ X += 1;
+ } else {
+ Y+= 1;
+ }
+ }
+ lassert(X%2 == 0, "ohno");
+ lassert(Y%2 == 0, "ohno");
+ X /= 2;
+ Y /= 2;
+ }
}
} // namespace task