#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int a[n];
memset(a, 0, sizeof(a));
vector <tuple <int, int, int, int>> v;
for (int i = 1; i <= m; i++) {
int l, r, k, c;
cin >> l >> r >> k >> c;
v.emplace_back(l, r-l+1-k+c, c, i);
v.emplace_back(r+1, -(r-l+1-k+c), c, i);
}
sort(v.begin(), v.end());
vector <pair <int, int>> mn, mx;
for (int i = 0; i < v.size(); i++) {
auto [idx, k, c, id] = v[i];
if (k > 0) {
if (c) mn.emplace_back(k, id);
else mx.emplace_back(k, id);
} else {
if (c) {
for (int j = 0; j < mn.size(); j++) if (mn[j].second == id) {mn[j].first = 0; break;}
} else {
for (int j = 0; j < mx.size(); j++) if (mx[j].second == id) {mx[j].first = n; break;}
}
}
if (i < v.size()-1 && get<0>(v[i+1]) == idx) continue;
int mmn = 0, mmx = n;
for (auto e : mn) mmn = max(mmn, e.first);
for (auto e : mx) mmx = min(mmx, e.first);
// cout << idx << ' ' << mmn << ' ' << mmx << '\n';
if (0 < mmx) {
a[idx] = 1;
for (auto &e : mn) e.first--;
for (auto &e : mx) e.first--;
}
}
for (int e : a) cout << e << ' ';
cout << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |