这个代码运行 超时了,实在没法继续在这个思路上优化了,网上看到一篇很不错的思路,大家看看这个更好
201809-2 买菜
#include <iostream>
using namespace std;
struct Time
{
long long a[1000]= {0};
long long b[1000]= {0};
};
int n;
struct Time h;
struct Time w;
int main()
{
int t=0;
cin>>n;
for(int i=0; i<n; i++)
cin>>h.a[i]>>h.b[i];
for(int i=0; i<n; i++)
{ int j=0;
cin>>w.a[i]>>w.b[i];
while(w.a[i]>h.b[j]){
j++;
}
while(j<n&&h.a[j]<w.b[i])
{
if(w.a[i]<h.b[j]&&w.b[i]>h.a[j])//有交集
{
if(w.a[i]>=h.a[j]) //左交
{
if(h.b[j]<w.b[i])//左交
t+=h.b[j]-w.a[i];
else//被包含
t+=w.b[i]-w.a[i];
}
else if(w.b[i]<=h.b[j]) //右交
{
if(h.a[j]>w.a[i])//右交
t+=w.b[i]-h.a[j];
else//被包含
t+=w.b[i]-w.a[i];
}
else//包含
t+=h.b[j]-h.a[j];
}
j++;
}
}
cout<<t;
return 0;
}