Submission #244379

#TimeUsernameProblemLanguageResultExecution timeMemory
244379VimmerPick (COI18_pick)C++14
100 / 100
6 ms384 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-O3") //#pragma GCC optimize("Ofast") //#pragma GCC optimize("fast-math") //#pragma GCC optimize("no-stack-protector") #define F first #define S second #define sz(x) int(x.size()) #define pb push_back #define N 101001 #define M ll(998244353) #define inf 1e9 + 1e9 using namespace std; //using namespace __gnu_pbds; typedef long double ld; typedef long long ll; typedef short int si; typedef array <int, 3> a3; //typedef tree <int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; vector <pair <int, int> > vr; int main() { //freopen("input.txt", "r", stdin); //freopen("output4.txt", "w", stdout); ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0); bool f1 = 0, f2 = 0; int a, b, c, d; cin >> a >> b >> c >> d; if (c + d == 0) { int x = 0, y = 0; cout << 0 << " " << 0 << endl; for (int i = 0; i < a / 2; i++) {x++; cout << x << " " << y << endl;} y++; cout << x << " " << y << endl; for (int i = 0; i < a / 2 - 1; i++) {x--; cout << x << " " << y << endl;} for (int i = 0; i < b / 2 - 1; i++) {y++; cout << x << " " << y << endl;} x--; cout << x << " " << y << endl; for (int i = 0; i < b / 2 - 1; i++) {y--; cout << x << " " << y << endl;} exit(0); } else if (a + b == 0) { cout << 0 << " " << 0 << endl; int x = 0, y = 0; for (int i = 0; i < c / 2; i++) { x++; y++; cout << x << " " << y << endl; } x--; y++; cout << x << " " << y << endl; for (int i = 0; i < c / 2 - 1; i++) { x--; y--; cout << x << " " << y << endl; } for (int i = 0; i < d / 2 - 1; i++) { x--; y++; cout << x << " " << y << endl; } x--; y--; cout << x << " " << y << endl; for (int i = 1; i < d / 2; i++) { x++; y--; cout << x << " " << y << endl; } exit(0); } else { if (a == 0) {f1 = 1; swap(a, b);} if (c == 0) {f2 = 1; swap(c, d);} if (c != 0 && d != 0 && c%2 == 0) {f2 = 1; swap(c, d);} int x = 0, y = 0; if (a % 2 == 0 && b % 2 == 0 && c % 2 == 0 && d % 2 == 0) { for (int i = 0; i < a / 2; i++) {vr.pb({x, y});x++; } vr.pb({x, y}); x++; y++; for (int i = 0; i < b / 2; i++) {vr.pb({x, y});y++; } for (int i = 0; i < c / 2 - 1; i++) {vr.pb({x, y}); x++; y++; } for (int i = 0; i < d / 2; i++) {vr.pb({x, y});x--; y++; } vr.pb({x, y}); x--; for (int i = 0; i < d / 2; i++){vr.pb({x, y});x++; y--; } for (int i = 0; i < c / 2 - 1; i++) {vr.pb({x, y});x--; y--; } for (int i = 0; i < b / 2; i++) {vr.pb({x, y});y--; } for (int i = 0; i < a / 2 - 1; i++) {vr.pb({x, y});x--; } vr.pb({x, y}); x--; y--; } else if (a % 2 == 0 && b % 2 == 0 && c % 2 == 1 && d % 2 == 1) { for (int i = 0; i < (a - 2) / 2; i++) {vr.pb({x, y});x++; } vr.pb({x, y}); x++; y++; for (int i = 0; i < b / 2; i++) {vr.pb({x, y});y++; } for (int i = 0; i < (c - 1) / 2; i++) { vr.pb({x, y});x++; y++; } for (int i = 0; i < (d - 1) / 2; i++) {vr.pb({x, y});x--; y++; } vr.pb({x, y}); x--; for (int i = 0; i < (d - 1) / 2; i++){vr.pb({x, y});x++; y--; } for (int i = 0; i < (c - 1) / 2; i++) {vr.pb({x, y});x--; y--; } for (int i = 0; i < b / 2; i++) {vr.pb({x, y});y--; } for (int i = 0; i < (a - 2) / 2; i++) {vr.pb({x, y});x--; } vr.pb({x, y}); x--; vr.pb({x, y}); x++; y--; } else if (a % 2 == 1 && b % 2 == 1 && c % 2 == 1 && d % 2 == 0) { for (int i = 0; i < (a - 1) / 2; i++) {vr.pb({x, y});x++; } vr.pb({x, y}); x++; y++; for (int i = 0; i < (b - 1) / 2; i++) {vr.pb({x, y});y++; } for (int i = 0; i < (c - 1) / 2; i++) {vr.pb({x, y}); x++; y++; } for (int i = 0; i < d / 2; i++) {vr.pb({x, y});x--; y++; } vr.pb({x, y}); x--; for (int i = 0; i < d / 2; i++){vr.pb({x, y});x++; y--; } for (int i = 0; i < (c - 1) / 2; i++) {vr.pb({x, y});x--; y--; } for (int i = 0; i < (b - 1) / 2; i++) {vr.pb({x, y});y--; } for (int i = 0; i < (a - 1) / 2; i++) {vr.pb({x, y});x--; } vr.pb({x, y}); y--; } } if (f1) for (int i = 0; i < sz(vr); i++) swap(vr[i].F, vr[i].S); if (f2) for (int i = 0; i < sz(vr); i++) vr[i].S = -vr[i].S; for (auto it : vr) cout << it.F << " " << it.S << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...