# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1272052 | quangminh412 | Fire (BOI24_fire) | C++17 | 45 ms | 82608 KiB |
/*
Ben Watson
Quang Minh MasterDDDDD
*/
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const string name = "test";
void solve();
signed main()
{
if (fopen((name + ".inp").c_str(), "r"))
{
freopen((name + ".inp").c_str(), "r", stdin);
freopen((name + ".out").c_str(), "w", stdout);
}
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
solve();
return 0;
}
// main program
const int oo = 0x3f3f3f3f;
const int maxn = 2e5 + 1;
const int lim = 1e6 + 1;
const int maxbit = 20;
struct BinaryLifting
{
int nxt[maxbit][lim], R[lim];
BinaryLifting() { for (int i = 0; i < lim; i++) R[i] = -oo; }
void add(int a, int b) { R[a] = max(R[a], b); }
void proc()
{
for (int i = 1; i < lim; i++)
R[i] = max(R[i], R[i - 1]);
for (int i = 0; i < lim; i++)
nxt[0][i] = R[i];
for (int i = 1; i < maxbit; i++)
for (int j = 0; j < lim; j++)
{
int mid = nxt[i - 1][j];
nxt[i][j] = (mid != -oo ? nxt[i - 1][mid] : -oo);
}
}
int query(int a, int b)
{
int res = 0;
for (int i = 0; i < maxbit && a < b; i++)
if (nxt[i][a] != -oo)
{
a = nxt[i][a];
res += (1 << i);
}
return (a < b ? oo : res);
}
};
int S[maxn], E[maxn];
BinaryLifting B;
vector<int> v;
int n, m, N;
void solve()
{
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> S[i] >> E[i];
v.push_back(S[i]);
v.push_back(E[i]);
}
v.push_back(0);
v.push_back(m);
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
N = (int)v.size();
map<int, int> mp;
for (int i = 0; i < N; i++)
mp[v[i]] = i;
for (int i = 1; i <= n; i++)
{
S[i] = mp[S[i]];
E[i] = mp[E[i]];
if (S[i] < E[i])
{
B.add(S[i], E[i]);
B.add(S[i] + N, E[i] + N);
} else
B.add(S[i], E[i] + N);
}
B.proc();
int res = oo;
for (int i = 0; i < N; i++)
res = min(res, B.query(i, i + N));
cout << (res == oo ? -1 : res) << '\n';
}
컴파일 시 표준 에러 (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... |