제출 #721656

#제출 시각아이디문제언어결과실행 시간메모리
721656drdilyorEvent Hopping (BOI22_events)C++17
0 / 100
1544 ms7676 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int inf = 1e9 + 1e5; struct event { int l, r, i; }; int main() { int n, m; cin >> n >> m; vector<event> ev(n), og; map<int,int> comp; int _i = 0; for (auto& [s, e, i] : ev) { cin >> s >> e; comp[s] = comp[e] = 0; i = _i++; } int k = 0; for (auto& mp : comp) mp.second = k++; for (auto& [s, e, i] : ev) s = comp[s], e = comp[e]; og = ev; sort(ev.begin(), ev.end(), [&](auto& a, auto& b) { return a.r == b.r ? a.l < b.l : a.r < b.r ; }); //for (auto [l, r, i] : ev) cout << l << ' ' << r << ' ' << i << "\n"; while (m--) { int s, e; cin >> s >> e; s--;e--; if (s == e) { cout << "0\n"; continue; } int si = 0, ei; for (int j = 0; j < n; j++) { if (ev[j].i == s) si = j; if (ev[j].i == e) ei = j; } //cout << "s,e = " << si << ' '<< ei << '\n'; int res = 0; bool found = 0; int left = ev[ei].l; set<int> st; for (int j = ei-1; j >= 0; j--) { auto [l,r,_i] = ev[j]; if (r < left) { if (st.empty()) break; left = *st.begin(); if (r < left) break; st.clear(); res++; if (j == si) {found = 1; break;} } else if (j == si) { res++; found = 1; break; } st.insert(l); } if (found) cout << res << '\n'; else cout << "impossible\n"; } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

events.cpp: In function 'int main()':
events.cpp:57:18: warning: 'ei' may be used uninitialized in this function [-Wmaybe-uninitialized]
   57 |         for (int j = ei-1; j >= 0; j--) {
      |                  ^
#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...