题目:
代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
int x1[n],y1[n],x2[n],y2[n];
for(int i=0; i<n; i++)
{
cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];
}
int sum=0;
for(int i=0; i<n; i++)
{
int l,r,u,d,x,y;
if(x1[i]<=0)
{
l=0;
}
else if(x1[i]>0&&x1[i]<a)
{
l=x1[i];
}
else
{
continue;
}
if(y1[i]<=0)
{
d=0;
}
else if(y1[i]>0&&y1[i]<b)
{
d=y1[i];
}
else
{
continue;
}
if(x2[i]>=0&&x2[i]<=a)
{
r=x2[i];
}
else if(x2[i]>a)
{
r=a;
}
else
{
continue;
}
if(y2[i]>=0&&y2[i]<=b)
{
u=y2[i];
}
else if(y2[i]>b)
{
u=b;
}
else
{
continue;
}
x=r-l;
y=u-d;
sum+=x*y;
}
cout<<sum;
}
代码太过冗长复杂,通过查阅资料修改后:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
int x1[n],y1[n],x2[n],y2[n];
int sum=0;
int x,y;
for(int i=0; i<n; i++)
{
cin>>x1[i]>>y1[i]>>x2[i]>>y2[i];
x=min(x2[i],a)-max(0,x1[i]);
y=min(b,y2[i])-max(0,y1[i]);
if(x>=0&&y>=0)
{
sum+=x*y;
}
}
cout<<sum;
}