Submission #1272052

#TimeUsernameProblemLanguageResultExecution timeMemory
1272052quangminh412Fire (BOI24_fire)C++17
0 / 100
45 ms82608 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'; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen((name + ".inp").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen((name + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...