@@ -15,7 +15,8 @@ vector<vector<P>> handmade_med = {
15
15
{{-3000 ,-3000 }, {3000 ,-3000 }, {-3000 ,3000 }, {3000 ,3000 }, {-3000 ,-3000 }, {2999 ,-3000 }, {-3000 ,2999 }, {2999 ,2999 }},
16
16
{{-3000 ,3000 }, {0 ,3000 }, {-3000 ,0 }, {0 ,0 }, {0 ,0 }, {0 ,3000 }, {3000 ,0 }, {3000 ,3000 }},
17
17
{{-3000 ,-3000 }, {-3000 ,-2999 }, {-2999 ,-3000 }, {-2999 ,-2999 }, {-3000 ,3000 }, {-3000 ,2999 }, {-2999 ,3000 }, {-2999 ,2999 }},
18
- {{-3000 ,-3000 }, {-3000 , -3000 }, {3000 ,-3000 }, {3000 , -3000 }, {-3000 ,3000 }, {-3000 ,3000 }, {3000 ,3000 }, {3000 ,3000 }}
18
+ {{-3000 ,-3000 }, {-3000 , -3000 }, {3000 ,-3000 }, {3000 , -3000 }, {-3000 ,3000 }, {-3000 ,3000 }, {3000 ,3000 }, {3000 ,3000 }},
19
+ {{0 ,0 }, {1 ,0 }, {0 ,1 }, {1 ,1 }, {2 ,0 }, {3 ,0 }, {2 ,1 }, {3 ,1 }}
19
20
};
20
21
21
22
vector<vector<P>> handmade_large = {
@@ -25,13 +26,19 @@ vector<vector<P>> handmade_large = {
25
26
};
26
27
27
28
28
- void shuffle_and_output (ostream &os, vector<P> v) {
29
+ void shuffle_and_output (ostream &os, vector<vector<P>> &vec) {
30
+ shuffle (begin (vec), end (vec));
31
+ for (auto &v : vec) {
32
+ for (int i=0 ; i<8 ; i++) os << v[i].first << " " << v[i].second << (i==7 ? " \n " : " " );
33
+ }
34
+ }
35
+
36
+ void shuffle_vector (vector<P> &v) {
29
37
assert (v.size () == 8 );
30
38
shuffle (begin (v), end (v));
31
- for (int i=0 ; i<8 ; i++) os << v[i].first << " " << v[i].second << (i==7 ? " \n " : " " );
32
39
}
33
40
34
- bool validate_and_answer (ostream &os, const vector<P> &v) {
41
+ bool validate ( const vector<P> &v) {
35
42
if (v.size () != 8 ) return false ;
36
43
37
44
for (int i=0 ; i<8 ; i++){
@@ -69,18 +76,12 @@ bool validate_and_answer(ostream &os, const vector<P> &v) {
69
76
if (l1>0 && l2>0 ) ans[{min (l1,l2), max (l1,l2)}]++;
70
77
}
71
78
72
- if (ans.size () == 1 ){
73
- os << ans.begin ()->first .first << " " << ans.begin ()->first .second << endl;
74
- return true ;
75
- } else {
76
- return false ;
77
- }
79
+ return ans.size () == 1 ;
78
80
}
79
81
80
82
81
- void generate (const string &file_name, int num_case, int max_abs, const vector<vector<P>> & hand_cases, bool is_parallel = false ) {
83
+ void generate (const string &file_name, int num_case, int max_abs, vector<vector<P>> hand_cases, bool is_parallel = false ) {
82
84
ofstream in_ofs (file_name + " .in" );
83
- ofstream diff_ofs (file_name + " .diff" );
84
85
in_ofs << num_case << endl;
85
86
86
87
auto gen_square = [max_abs, is_parallel](){
@@ -101,20 +102,26 @@ void generate(const string &file_name, int num_case, int max_abs, const vector<v
101
102
return vector<P>({p1, p2, p3, p4});
102
103
};
103
104
105
+ vector<vector<P>> cases;
106
+
104
107
for (int i=0 ; i + hand_cases.size ()<num_case; i++) {
105
108
vector<P> v;
106
109
do {
107
110
v = gen_square ();
108
111
auto tmp = gen_square ();
109
112
v.insert (v.end (), tmp.begin (), tmp.end ());
110
- } while (!validate_and_answer (diff_ofs, v));
111
- shuffle_and_output (in_ofs, v);
113
+ } while (!validate (v));
114
+ shuffle_vector (v);
115
+ cases.push_back (v);
112
116
}
113
117
114
118
for (auto &v : hand_cases) {
115
- assert (validate_and_answer (diff_ofs, v));
116
- shuffle_and_output (in_ofs, v);
119
+ assert (validate (v));
120
+ shuffle_vector (v);
121
+ cases.push_back (v);
117
122
}
123
+
124
+ shuffle_and_output (in_ofs, cases);
118
125
}
119
126
120
127
0 commit comments