# |
제출 시각 |
아이디 |
문제 |
언어 |
결과 |
실행 시간 |
메모리 |
906025 |
2024-01-13T10:26:36 Z |
atom |
RMQ (NOI17_rmq) |
C++17 |
|
2 ms |
3148 KB |
#include "bits/stdc++.h"
// @JASPER'S BOILERPLATE
using namespace std;
using ll = long long;
#ifdef JASPER
#include "debug.h"
#else
#define debug(...) 166
#endif
const int N = 1e5 + 5;
int n, q;
vector <pair <int, int>> qs[N];
int ans[N];
set <int> idx;
int lst;
// Storing indexes
bool vis[N];
void impossible() {
for (int i = 1; i <= n; ++i) cout << "-1 ";
exit(0);
}
void brute(int cur, int id) {
while (lst >= 0 && vis[lst]) --lst;
if (lst <= cur) impossible();
ans[id] = lst;
vis[lst] = 1;
}
void solve(int x, int l, int r, int L, int R) {
if (L > R) impossible();
auto p = idx.lower_bound(l);
auto i = p;
// debug(*p);
bool done = 0;
while (p != idx.end() && *p <= r) {
// find minimum range where x is the minimum for all range of [L, R]
if (l <= *p && *p <= r && !done) {
ans[*p] = x;
vis[x] = 1;
done = 1;
// debug(l, r, *p);
}
else {
brute(x, *p);
}
++p;
}
// for (int i = 1; i <= n; ++i) cout << ans[i] << " ";
// remove processed range
if (!done) impossible();
idx.erase(i, p);
}
signed main() {
cin.tie(0) -> sync_with_stdio(0);
#ifdef JASPER
freopen("in1", "r", stdin);
#endif
cin >> n >> q;
for (int i = 1; i <= q; ++i) {
int l, r, x;
cin >> l >> r >> x;
++l; ++r;
qs[x].push_back({l, r});
}
lst = n - 1;
for (int i = 1; i <= n; ++i) idx.insert(i);
for (int x = n - 1; x >= 0; --x) {
if (!qs[x].empty()) {
int l = -1, L = 1e9;
int r = 1e9, R = -1;
for (auto& [lb, rb] : qs[x]) {
l = max(l, lb); L = min(L, lb);
r = min(r, rb); R = max(R, rb);
}
solve(x, l, r, L, R);
}
}
for (int i : idx) {
brute(0, i);
}
for (int i = 1; i <= n; ++i) cout << ans[i] << " \n"[i == n];
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2904 KB |
Output is correct |
2 |
Correct |
1 ms |
2904 KB |
Output is correct |
3 |
Correct |
1 ms |
3148 KB |
Output is correct |
4 |
Correct |
1 ms |
2908 KB |
Output is correct |
5 |
Correct |
1 ms |
2908 KB |
Output is correct |
6 |
Correct |
1 ms |
2908 KB |
Output is correct |
7 |
Correct |
1 ms |
2908 KB |
Output is correct |
8 |
Correct |
1 ms |
3056 KB |
Output is correct |
9 |
Incorrect |
2 ms |
2904 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2904 KB |
Output is correct |
2 |
Correct |
1 ms |
2904 KB |
Output is correct |
3 |
Correct |
1 ms |
3148 KB |
Output is correct |
4 |
Correct |
1 ms |
2908 KB |
Output is correct |
5 |
Correct |
1 ms |
2908 KB |
Output is correct |
6 |
Correct |
1 ms |
2908 KB |
Output is correct |
7 |
Correct |
1 ms |
2908 KB |
Output is correct |
8 |
Correct |
1 ms |
3056 KB |
Output is correct |
9 |
Incorrect |
2 ms |
2904 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2904 KB |
Output is correct |
2 |
Correct |
1 ms |
2904 KB |
Output is correct |
3 |
Correct |
1 ms |
3148 KB |
Output is correct |
4 |
Correct |
1 ms |
2908 KB |
Output is correct |
5 |
Correct |
1 ms |
2908 KB |
Output is correct |
6 |
Correct |
1 ms |
2908 KB |
Output is correct |
7 |
Correct |
1 ms |
2908 KB |
Output is correct |
8 |
Correct |
1 ms |
3056 KB |
Output is correct |
9 |
Incorrect |
2 ms |
2904 KB |
Output isn't correct |
10 |
Halted |
0 ms |
0 KB |
- |