过了一个寒假不会打代码了 QAQ;
特别是要注意处理小H或小W的某一段区间特别长的情况,不要那段特别长的区间没有充分利用就跳到了下一个区间。
#include <iostream>
#include <cstdio>
using namespace std;
struct Duration{
int from, to;
};
Duration H[2000+5];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; ++i)
scanf("%d%d", &H[i].from, &H[i].to);
int ans = 0;
int cur = 1;
for(int i = 1; i <= n; ++i)
{
int ff, tt;
scanf("%d%d", &ff, &tt);
if(cur > n)
continue;
while(H[cur].to <= ff && cur <= n)
cur ++;
while(H[cur].from < tt && cur <= n)
{
ans += (min(tt,H[cur].to)-max(ff,H[cur].from));
if(H[cur].to <= tt)
cur ++;
else break;
}
}
cout << ans << endl;
return 0;
}