#include <bits/stdc++.h> using namespace std; #define ll long long pair <ll,ll> seg[1002]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n,s,ret=0; cin >> n; int m,src; cin >> m >> s; for(int i=1; i<=m; i++) cin >> seg[i].first >> seg[i].second; sort(seg+1, seg+m+1); for(int i=1; i<=m; i++) if(s >= seg[i].first && s <= seg[i].second) src = i; int act = src; while(true) { if(act == 1) { if(seg[act].first > 1) ret = seg[act].first-1; break; } else if(seg[act].first-1 != seg[act-1].second) { ret = seg[act].first-1; break; } else act--; } act = src; while(true) { if(act == m) { if(seg[act].second < n) { if(!ret) ret = seg[act].second+1; else if(seg[act].second+1-s < s-ret) ret = seg[act].second+1; } break; } else if(seg[act].second+1 != seg[act+1].first) { if(!ret) ret = seg[act].second+1; else if(seg[act].second+1-s < s-ret) ret = seg[act].second+1; break; } else act++; } cout << ret << '\n'; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include <bits/stdc++.h> using namespace std; #define ll long long pair <ll,ll> seg[1002]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n,s,ret=0; cin >> n; int m,src; cin >> m >> s; for(int i=1; i<=m; i++) cin >> seg[i].first >> seg[i].second; sort(seg+1, seg+m+1); for(int i=1; i<=m; i++) if(s >= seg[i].first && s <= seg[i].second) src = i; int act = src; while(true) { if(act == 1) { if(seg[act].first > 1) ret = seg[act].first-1; break; } else if(seg[act].first-1 != seg[act-1].second) { ret = seg[act].first-1; break; } else act--; } act = src; while(true) { if(act == m) { if(seg[act].second < n) { if(!ret) ret = seg[act].second+1; else if(seg[act].second+1-s < s-ret) ret = seg[act].second+1; } break; } else if(seg[act].second+1 != seg[act+1].first) { if(!ret) ret = seg[act].second+1; else if(seg[act].second+1-s < s-ret) ret = seg[act].second+1; break; } else act++; } cout << ret << '\n'; } |