Pagini recente » Cod sursa (job #1833251) | Cod sursa (job #1480615) | Cod sursa (job #2409102) | Cod sursa (job #825275) | Cod sursa (job #2515559)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("dreptunghiuri4.in");
ofstream cout("dreptunghiuri4.out");
void schimb (int &x,int &y)
{
int cop=x;
x=y;
y=cop;
}
int v[2001],v2[2001];
int cautbin(int v[],int n,int val)
{
int st=1,dr=n,m;
while(st<=dr)
{
m=(st+dr)/2;
if(val==v[m])
return m;
else
if(val<v[m])
dr=m-1;
else
st=m+1;
}
}
struct ura{
int x,y,x2,y2;
};
ura v1[1001];
int a[2001][2001];
int main()
{
int n,k,i,j,x,y,x2,y2,nr=0,nrr=0,nrr2=0;
long long rez=0;
cin>>n>>k;
for(i=1;i<=n;i++)
{
cin>>x>>y>>x2>>y2;
v1[i].x=x;
v1[i].y=y;
v1[i].x2=x2;
v1[i].y2=y2;
if(x>x2)
schimb(x,x2);
if(y>y2)
schimb(y,y2);
nr++;
v[nr]=x;
v2[nr]=y;
nr++;
v[nr]=x2;
v2[nr]=y2;
}
sort(v+1,v+nr+1);
sort(v2+1,v2+nr+1);
for(i=1;i<=nr;i++)
{
if(v[i]!=v[i-1])
{
nrr++;
v[nrr]=v[i-1];
}
}
nrr++;
v[nrr]=v[nr];
for(i=1;i<=nr;i++)
{
if(v2[i]!=v2[i-1])
{
nrr2++;
v2[nrr2]=v2[i-1];
}
}
nrr2++;
v2[nrr2]=v2[nr];
for(i=1;i<=n;i++)
{
x=cautbin(v,nrr,v1[i].x);
x2=cautbin(v,nrr,v1[i].x2);
y=cautbin(v2,nrr2,v1[i].y);
y2=cautbin(v2,nrr,v1[i].y2);
a[x2][y2]++;
a[x][y]++;
a[x][y2]--;
a[x2][y]--;
}
for(i=1;i<=nrr;i++)
for(j=1;j<=nrr2;j++)
a[i][j]+=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
for(i=1;i<=nrr;i++)
for(j=1;j<=nrr2;j++)
if(a[i][j]==k)
rez+=((long long)(v[i+1]-v[i]))*(v2[j+1]-v2[j]);
cout<<rez;
return 0;
}