Codeforces Round #371 (Div. 2) A
题意: 给出2个区间l1,r1,l2,r2,求交集 并且不能包含k
思路:取l1,l2中较大的作为交集的l,取r1,r2中较大的作为交集的r, r-l+1 即为交集 再判断k是否在交集内
对了 用long long 嗯 日了狗。。。。
AC代码:
1 #include "iostream" 2 #include "string.h" 3 #include "stack" 4 #include "queue" 5 #include "map" 6 #include "algorithm" 7 #include "stdio.h" 8 #include "math.h" 9 #define ll long long 10 #define mem(a) memset(a,0,sizeof(a)) 11 #define max(a,b) a > b ? a : b 12 #define min(a,b) a < b ? a : b 13 14 using namespace std; 15 16 int main() 17 { 18 ll l1,l2,r1,r2,k,l,r,ans = 0; 19 cin>>l1>>r1>>l2>>r2>>k; 20 l = max(l1,l2); 21 r = min(r1,r2); 22 ans += r-l+1; 23 if(k>=l && k<=r) 24 ans--; 25 if(r<l) 26 ans = 0; 27 printf("%I64d\n",ans); 28 return 0; 29 }