Submission #828053

#TimeUsernameProblemLanguageResultExecution timeMemory
828053YunanSunčanje (COCI18_suncanje)C++17
104 / 130
4075 ms8380 KiB
#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 (stderr)

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 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...