CSP2018-09(二)买菜
此题为区间相交的问题,代码如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
typedef long long LL;
using namespace std;
struct period{
int a;
int b;
}H[2010],W[2010];
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&H[i].a,&H[i].b);
}
for(int i=0;i<n;i++){
scanf("%d%d",&W[i].a,&W[i].b);
}
int i=0;
int j=0;
int time=0;
while(i<n&&j<n){
if(H[i].a<=W[j].a){
if(H[i].b<=W[j].a){i++;continue;}
else if(H[i].b<=W[j].b){
time+=H[i].b-W[j].a;
i++;
continue;
}else if(H[i].b>W[j].b){
time+=W[j].b-W[j].a;
j++;
continue;
}
}
if(H[i].a>W[j].a){
if(H[i].a>W[j].b){j++;continue;}
else if(H[i].b>=W[j].b){
time+=W[j].b-H[i].a;
j++;
continue;
}
else if(H[i].b<W[j].b){
time+=H[i].b-H[i].a;
i++;
continue;
}
}
}
cout<<time<<endl;
}