제출 #1164213

#제출 시각아이디문제언어결과실행 시간메모리
1164213PakinDioxideRestore Array (RMI19_restore)C++17
0 / 100
56 ms964 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...