#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"; } |
English