CCF-CSP备考记录:201809-2 买菜
题目
解析
[略]
100分c++代码:
#include <iostream>
using namespace std;
int A[4000]={0},B[4000]={0}; //A为开始时间,B为结束时间
int main(int argc, char** argv) {
int n,a,b,c,d,i,j,time=0;
cin>>n;
for(int i=0;i<2*n;i++){ //A,B的前n个为小H的(a,b)段,第n+1~2n个为小W的(c,d)段
cin>>A[i]>>B[i];
}
for(i=0;i<n;i++){
a=A[i];b=B[i];//(a,b)
for(j=n;j<2*n;j++){ //每个(a,b)都和每个(c,d)依次比较
c=A[j];d=B[j];//(c,d)
if(b<=c)break; ///a<b <= c<d
else if(b<=d){
if(a<c)time+=b-c;
else time+=b-a;
}
else{ //d<b
if(a<c)time+=d-c;
else if(a<d)time+=d-a;
else continue; //c<d <= a<b
}
}
}
cout<<time;
return 0;
}