| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1281395 | red_souls | Fire (BOI24_fire) | C++17 | 56 ms | 5548 KiB |
#include <bits/stdc++.h>
#define ll long long
#define task "FIRE"
using namespace std;
const int N = 5e5 + 16;
int n, m, s[N], e[N];
namespace sub6 {
struct line {
int l, r, id;
bool operator < (const line &other) const {
if (l == other.l) {
return r > other.r;
}
return l < other.l;
}
};
int cnt, result;
line a[N];
bool visited[N];
void solve() {
for (int i = 1; i <= n; i++) {
if (s[i] <= e[i]) {
a[++cnt] = {s[i], e[i] - 1, i};
}
else {
a[++cnt] = {s[i], m - 1, i};
a[++cnt] = {0, e[i] - 1, i};
}
}
sort(a + 1, a + 1 + cnt);
int curP = 1, p = 0;
while (p <= m - 1) {
int r = -1, rId = -1;
while (curP <= cnt && a[curP].l <= p) {
if (a[curP].r > r) {
r = a[curP].r;
rId = curP;
}
curP++;
}
if (r < p) {
cout << -1;
return;
}
p = r + 1;
visited[a[rId].id] = true;
}
for (int i = 1; i <= n; i++) {
if (visited[i]) {
result++;
}
}
cout << result;
}
}
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> s[i] >> e[i];
}
sub6 :: solve();
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 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... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
