A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?

// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
//

include "stdafx.h"

include

include

include

include

include

using namespace std;

bool compVec(vector vec1, vector vec2 )
{
bool flag = false;
for (int i = 0; i < vec1.size();i++)
{

for (int j = 0; j < vec2.size(); j++)
{
if (vec1[i] == vec2[j])
{
flag = true;
break;
}
}
if (flag == true)
{
break;
}
}
//cout << "执行了" << endl;
return flag;
}

int main()
{
int p,q,l,r;
while (cin >> p>>q>>l>>r)
{
vector vec1;
vector vec2;
int num = 0;
for (int i = 0; i < p; i++)
{
int a, b;
cin >> a >> b;
for (int j = a; j <= b; j++)
{
vec1.push_back(j);
}
}

for (int i = 0; i < q; i++)
{
int a, b;
cin >> a >> b;
for (int j = a ; j <= b ; j++)
{
vec2.push_back(j);
}
}

for (int k = l; k <= r; k++)
{

for (int i = 0; i < vec2.size(); i++)
{
vec2[i] = vec2[i] + k;
}

if (compVec(vec1, vec2) == true)
{
num++;
}
for (int i = 0; i < vec2.size(); i++)
{
vec2[i] = vec2[i] - k;
}

}

cout << num << endl;

}

return 0;
}

posted @ 2017-03-07 17:01  wdan2016  阅读(271)  评论(0)    收藏  举报