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 }

 

posted on 2016-09-14 02:26  lazzzy  阅读(130)  评论(0编辑  收藏  举报

导航