#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ft first
#define sc second
#define elif else if
const int sizen = 2e6+1112;
int A,B,N,M,lewy,prawy,S;
vector<pair<int,int>>prawe;
vector<pair<int,int>>lewe;
void solve()
{
for (int i = prawe.size()-1; i >= 0 ; i--)
{
if (prawe[i].sc >= prawy && prawe[i].ft <= prawy)
{
prawy = prawe[i].ft - 1 ;
}
}
for (int i = 0; i < lewe.size() ; i++)
{
if (lewe[i].ft <= lewy && lewe[i].sc >= lewy)
{
lewy = lewe[i].sc + 1 ;
}
}
}
void pre()
{
prawy = S-1; lewy = S+1 ;
for (int i =1 ; i <= M ; i ++)
{
cin >> A >> B ;
if (A <= S && B <= S)
{
prawe.push_back({A,B});
}
elif (A <= S && B > S)
{
prawe.push_back({A,S});
lewe.push_back({S,B});
}
elif (A > S && B > S)
{
lewe.push_back({A,B});
}
}
sort(prawe.begin(),prawe.end());
sort(lewe.begin(),lewe.end());
}
int32_t main()
{
ios::sync_with_stdio(NULL);
cin.tie(NULL);
cin >> N >> M >> S;
pre();
solve();
if(S-prawy <= lewy-S && prawy >= 1 )
{
cout << prawy ;
}
elif(lewy <= N)
{
cout << lewy;
}
elif (1)
{
cout << prawy;
}
}
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 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include<bits/stdc++.h> using namespace std; #define int long long #define ft first #define sc second #define elif else if const int sizen = 2e6+1112; int A,B,N,M,lewy,prawy,S; vector<pair<int,int>>prawe; vector<pair<int,int>>lewe; void solve() { for (int i = prawe.size()-1; i >= 0 ; i--) { if (prawe[i].sc >= prawy && prawe[i].ft <= prawy) { prawy = prawe[i].ft - 1 ; } } for (int i = 0; i < lewe.size() ; i++) { if (lewe[i].ft <= lewy && lewe[i].sc >= lewy) { lewy = lewe[i].sc + 1 ; } } } void pre() { prawy = S-1; lewy = S+1 ; for (int i =1 ; i <= M ; i ++) { cin >> A >> B ; if (A <= S && B <= S) { prawe.push_back({A,B}); } elif (A <= S && B > S) { prawe.push_back({A,S}); lewe.push_back({S,B}); } elif (A > S && B > S) { lewe.push_back({A,B}); } } sort(prawe.begin(),prawe.end()); sort(lewe.begin(),lewe.end()); } int32_t main() { ios::sync_with_stdio(NULL); cin.tie(NULL); cin >> N >> M >> S; pre(); solve(); if(S-prawy <= lewy-S && prawy >= 1 ) { cout << prawy ; } elif(lewy <= N) { cout << lewy; } elif (1) { cout << prawy; } } |
English