#include <iostream> #include <algorithm> #define MAX 2000 typedef long long ll; using namespace std; ll n,m,s,a,b,result; struct P { ll l,r; }; P p[MAX]; bool cmp(P x, P y) { return x.l < y.l; } int main() { cin >> n >> m >> s; for(int i=1;i<=m;i++) cin >> p[i].l >> p[i].r; p[0] = {-1,-1}; p[m+1] = {n+2,n+2}; sort(&p[1], &p[m+1], cmp); for(int i=0;i<=m;i++) { b=p[i].r+1; if (b > s && b < p[i+1].l) break; } for(int i=m;i>=1;i--) { a=p[i].l-1; if (a < s && a > p[i-1].r) break; } if(a < 1) result = b; else if (b>n) result = a; else { if (s-a>b-s) result = b; else result = a; } cout << result<< "\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 | #include <iostream> #include <algorithm> #define MAX 2000 typedef long long ll; using namespace std; ll n,m,s,a,b,result; struct P { ll l,r; }; P p[MAX]; bool cmp(P x, P y) { return x.l < y.l; } int main() { cin >> n >> m >> s; for(int i=1;i<=m;i++) cin >> p[i].l >> p[i].r; p[0] = {-1,-1}; p[m+1] = {n+2,n+2}; sort(&p[1], &p[m+1], cmp); for(int i=0;i<=m;i++) { b=p[i].r+1; if (b > s && b < p[i+1].l) break; } for(int i=m;i>=1;i--) { a=p[i].l-1; if (a < s && a > p[i-1].r) break; } if(a < 1) result = b; else if (b>n) result = a; else { if (s-a>b-s) result = b; else result = a; } cout << result<< "\n"; } |