Submission #828053

# Submission time Handle Problem Language Result Execution time Memory
828053 2023-08-17T02:50:16 Z Yunan Sunčanje (COCI18_suncanje) C++17
104 / 130
4000 ms 8380 KB
#include <bits/stdc++.h>

using namespace std;

struct event {
    int x, y1, y2, index;
    bool add;

    event() {}
    event(int _x, int _y1, int _y2, bool _add, int _index) {
        x = _x, y1 = _y1, y2 = _y2, add = _add, index = _index;
    }

    bool operator < (event e) {
        return x != e.x ? x < e.x : add < e.add;
    }
};

int n;

void Task() {
    ios_base :: sync_with_stdio(false); cin.tie(0); cout.tie(0);
    if (fopen("test.inp", "r")) {
        freopen("test.inp", "r", stdin);
        freopen("test.out", "w", stdout);
    }
}

void Solve() {
    vector <event> vecEvent;
    cin >> n;
    vector <pair <int, int>> vecY(n);
    for (int i = 0; i < n; ++i) {
        int x, y, a, b;
        cin >> x >> y >> a >> b;
        vecEvent.push_back(event(x, y, y + b, true, i));
        vecEvent.push_back(event(x + a, y, y + b, false, i));
        vecY[i] = {y, y + b};
    }
    vector <bool> vecAns(n, true);
    sort(vecEvent.begin(), vecEvent.end());
    n = vecEvent.size();
    set <pair <pair <int, bool>, int>> setY;
    for (int i = 0; i < n; ++i) {
        event e = vecEvent[i];
        if (e.add) {
            for (auto it : setY) {
                int ymin, ymax;
                if (it.first.second) {
                    ymin = it.first.first, ymax = vecY[it.second].second;
                } else {
                    ymin = vecY[it.second].first, ymax = it.first.first;
                }
                if (!(e.y2 <= ymin || ymax <= e.y1)) {
                    if (it.second > e.index) {
                        vecAns[e.index] = false;
                    } else {
                        vecAns[it.second] = false;
                    }
                }
            }
            setY.insert({{e.y1, true}, e.index});
            setY.insert({{e.y2, false}, e.index});
        } else {
            setY.erase({{e.y1, true}, e.index});
            setY.erase({{e.y2, false}, e.index});
        }
    }
    for (auto i : vecAns) {
        cout << (i ? "DA\n" : "NE\n");
    }
}

int main() {
    Task();
    Solve();
}

Compilation message

suncanje.cpp: In function 'void Task()':
suncanje.cpp:24:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |         freopen("test.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
suncanje.cpp:25:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |         freopen("test.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 11 ms 820 KB Output is correct
2 Correct 12 ms 1044 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 85 ms 1136 KB Output is correct
2 Correct 122 ms 4500 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 413 ms 1868 KB Output is correct
2 Correct 128 ms 4912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 842 ms 2060 KB Output is correct
2 Correct 111 ms 4572 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1052 ms 3400 KB Output is correct
2 Correct 364 ms 5168 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1836 ms 3364 KB Output is correct
2 Correct 419 ms 4800 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 129 ms 3400 KB Output is correct
2 Execution timed out 4075 ms 5976 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 157 ms 6140 KB Output is correct
2 Correct 3107 ms 3336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2576 ms 6212 KB Output is correct
2 Correct 718 ms 8380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 4061 ms 6340 KB Time limit exceeded
2 Halted 0 ms 0 KB -