-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path17292.cpp
97 lines (96 loc) · 2.33 KB
/
17292.cpp
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
85
86
87
88
89
90
91
92
93
94
95
96
97
g#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<double, double> pdd;
typedef queue<int> qi;
typedef queue<pair<int, int>> qii;
typedef priority_queue<int> pqi;
typedef priority_queue<ll> pql;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<pii> vii;
typedef vector<pll> vll;
const ll MOD = 1000000007;
const ll MAX = 1000000000;
int dx[4] = { 0,1,0,-1 };
int dy[4] = { 1,0,-1,0 };
bool cmp(string a, string b) {
int n1 = a[0] - '0';
char c1 = a[1];
int n2 = a[2] - '0';
char c2 = a[3];
int n3 = b[0] - '0';
char c3 = b[1];
int n4 = b[2] - '0';
char c4 = b[3];
if ('a' <= a[0] && a[0] <= 'f') {
n1 = 10 + (a[0] - 'a');
}
if ('a' <= a[2] && a[2] <= 'f') {
n2 = 10 + (a[2] - 'a');
}
if ('a' <= b[0] && b[0] <= 'f') {
n3 = 10 + (b[0] - 'a');
}
if ('a' <= b[2] && b[2] <= 'f') {
n4 = 10 + (b[2] - 'a');
}
int flag1 = ((abs(n1 - n2) == 1 || (n1 == 15 && n2 == 1) || (n1 == 1 && n2 == 15)));
int flag2 = ((abs(n3 - n4) == 1 || (n3 == 15 && n4 == 1) || (n3 == 1 && n4 == 15)));
int flag3 = (n1 == n2);
int flag4 = (n3 == n4);
int flag5 = (c1 == c2);//»ö
int flag6 = (c3 == c4);//»ö
int flag7 = max(n1, n2);//Å«Å«
int flag8 = max(n3, n4);//Å«Å«
int flag9 = min(n1, n2);//ÀÛÅ«
int flag10 = min(n3, n4);//ÀÛÅ«
int flag11 = (n1 == max(n1, n2) ? c1 == 'b' : c2 == 'b');
int flag12 = (n3 == max(n3, n4) ? c3 == 'b' : c4 == 'b');
if (flag1 == flag2) {
if (flag3 == flag4) {
if (flag5 == flag6) {
if (flag7 == flag8) {
if (flag9 == flag10) {
return flag11;
}
return flag9 > flag10;
}
return flag7 > flag8;
}
return flag5;
}
return flag3;
}
return flag1;
}
int main() {
cin.tie(NULL); ios_base::sync_with_stdio(false);
string str;
cin >> str;
vector<string> v;
string now = "";
for (int i = 0; i < str.length(); i++) {
if (str[i] == ',') {
v.push_back(now);
now = "";
continue;
}
now += str[i];
}
v.push_back(now);
vector<string> k;
for (int i = 0; i < v.size(); i++) {
for (int j = i + 1; j < v.size(); j++) {
k.push_back(v[i] + v[j]);
}
}
sort(begin(k), end(k), cmp);
for (int i = 0; i < k.size(); i++) {
cout << k[i] << '\n';
}
return 0;
}