Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cmath>
- #include <cassert>
- #include <algorithm>
- #include <string>
- #include <vector>
- #include <deque>
- #include <queue>
- #include <map>
- #include <set>
- #include "office.h"
- using namespace std;
- #define eprintf(...) fprintf(stderr, __VA_ARGS__)
- #define pb push_back
- #define mp make_pair
- #define sz(x) ((int)(x).size())
- typedef long long ll;
- typedef vector<ll> vll;
- typedef vector<int> vi;
- typedef vector<vi> vvi;
- typedef vector<bool> vb;
- typedef vector<vb> vvb;
- typedef pair<int, int> pii;
- bool check(int a, int b, int c) { return isOnLine(a + 1, b + 1, c + 1); }
- int main() {
- #ifdef DEBUG
- freopen("std.in", "r", stdin);
- freopen("std.out", "w", stdout);
- #endif
- int n = GetN();
- int a = -1, b = -1, c = -1;
- for (int st = 0; st < 5; st += 2) {
- a = st;
- b = (st + 1) % 5;
- c = (st + 2) % 5;
- if (st == 4) goto found;
- if (check(a, b, c)) { goto found; }
- }
- for (a = 0; a < 5; a++)
- for (b = a + 1; b < 5; b++)
- for (c = b + 1; c < 5; c++)
- if (check(a, b, c)) {
- int x = 0;
- while (x == a || x == b || x == c) x++;
- int y = 10 - a - b - c - x;
- Answer(a + 1, b + 1, x + 1, y + 1);
- }
- found:;
- vi rem;
- for (int i = 0; i < n; i++) if (i != a && i != b && i != c) rem.pb(i);
- vi second;
- for (int i = 0; i < sz(rem) && sz(second) < 2; i += 2) {
- int x = rem[i], y = i + 1 < sz(rem) ? rem[i + 1] : b;
- if (i + 2 >= sz(rem)) {
- } else {
- if (check(a, x, y)) continue;
- }
- if (check(a, b, x)) {
- second.pb(y);
- } else
- second.pb(x);
- }
- assert(sz(second) >= 2);
- Answer(a + 1, b + 1, second[0] + 1, second[1] + 1);
- assert(false);
- }
Add Comment
Please, Sign In to add comment