Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- struct Triangle {
- int add_l, add_c;
- int sub_l, sub_c;
- int o;
- Triangle () {}
- Triangle (int _add_l, int _add_c, int _sub_l, int _sub_c, int _o) :
- add_l (_add_l), add_c (_add_c), sub_l (_sub_l), sub_c (_sub_c), o (_o) {}
- };
- const int NMAX = 3e4 + 5;
- Triangle a[NMAX];
- int curr[NMAX];
- int n, m, ans;
- void press (int pos) {
- curr[pos] ^= 1;
- if (curr[pos]) ++ans;
- else --ans;
- }
- int main() {
- freopen ("j.in", "r", stdin);
- scanf ("%d\n%d\n", &n, &m);
- for (int i = 1; i <= m; ++i) {
- int l, c, p, o;
- scanf ("%d %d %d %d\n", &l, &c, &p, &o);
- l += n, c += n;
- if (o == 0) {
- a[i] = {l, c - p + 1, l + p, c, o};
- } else if (o == 1) {
- a[i] = {l, c, l + p, c + p - 1, o};
- } else if (o == 2) {
- a[i] = {l - p + 1, c, l + 1, c, o};
- } else if (o == 3) {
- a[i] = {l - p + 1, c, l + 1, c, o};
- }
- }
- for (int row = 1; row <= 3 * n; ++row) {
- for (int i = 1; i <= m; ++i) {
- if (row < a[i].add_l || row > a[i].sub_l) {
- continue;
- }
- if (row == a[i].add_l || row == a[i].sub_l) {
- for (int col = a[i].add_c; col <= a[i].sub_c; ++col) {
- press (col);
- }
- }
- int o = a[i].o;
- if (o == 0) {
- press (a[i].add_c);
- ++a[i].add_c;
- } else if (o == 1) {
- press (a[i].sub_c);
- --a[i].sub_c;
- } else if (o == 2) {
- press (a[i].add_c);
- ++a[i].add_c;
- } else {
- press (a[i].add_c);
- --a[i].add_c;
- }
- }
- }
- printf ("%d\n", ans);
- fclose (stdin);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement