Submission #469421

# Submission time Handle Problem Language Result Execution time Memory
469421 2021-09-01T00:43:24 Z flashmt Pairs (IOI07_pairs) C++17
Compilation error
0 ms 0 KB
#include <bits/stcd++.h>
#define fr(a,b,c) for (a=b;a<=c;a++)
using namespace std;

struct point { int x,y,z,t; };

struct BIT
{
	int size,f[150150];

	void update(int x,int v)
	{
		while (x<=size) f[x]+=v, x+=x&-x;
	}

   int get(int x)
	{
		int r=0;
		x=max(x,0); x=min(x,size);
		while (x) r+=f[x], x-=x&-x;
		return r;
	}
};

struct BIT_3D
{
	int size1,size2,size3,f[230][230][230];

	void update(int x,int y,int z,int v)
	{
		while (x<=size1)
		{
			int yy=y;
			while (yy<=size2)
			{
				int zz=z;
				while (zz<=size3) f[x][yy][zz]+=v, zz+=zz&-zz;
				yy+=yy&-yy;
			}
			x+=x&-x;
		}
	}

	int get(int x,int y,int z)
	{
		int r=0;
		x=max(x,0); x=min(x,size1);
		y=max(y,0); y=min(y,size2);
		z=max(z,0); z=min(z,size3);
		while (x)
		{
			int yy=y;
			while (yy)
			{
				int zz=z;
				while (zz) r+=f[x][yy][zz], zz-=zz&-zz;
				yy-=yy&-yy;
			}
			x-=x&-x;
		}
		return r;
	}
};

int type,n,m,d;
long long re;
vector < point > a;
BIT c;
BIT_3D e;

bool cmp(point i,point j)
{
	return i.x<j.x;
}

void work1()
{
	int i,j=0;
	point u;
	fr(i,1,n)	scanf("%d",&u.x),	a.push_back(u);
	sort(a.begin(),a.end(),cmp);
	fr(i,1,n-1)
	{
		while (a[j].x+d<a[i].x) j++;
		re+=i-j;
	}
}

void work2()
{
	int i,j=0,x,y;
	point u;
	c.size=m*2;
	fr(i,1,n)
	{
		scanf("%d%d",&x,&y);
		u.x=x-y; u.y=x+y;
		a.push_back(u);
	}
	sort(a.begin(),a.end(),cmp);
	c.update(a[0].y,1);
	fr(i,1,n-1)
	{
		while (a[j].x+d<a[i].x) c.update(a[j++].y,-1);
		re+=c.get(a[i].y+d)-c.get(a[i].y-d-1);
		c.update(a[i].y,1);
	}
}

int calc(int y,int yy,int z,int zz,int t,int tt)
{
	return e.get(y,z,t)-e.get(y,z,tt)-e.get(y,zz,t)-e.get(yy,z,t)+e.get(y,zz,tt)+e.get(yy,z,tt)+e.get(yy,zz,t)-e.get(yy,zz,tt);
}

void work3()
{
	int i,j=0,x,y,z,zz=1000,tt=1000;
	point u;
	fr(i,1,n)
	{
		scanf("%d%d%d",&x,&y,&z);
		u.x=x-y-z; u.y=x+y+z;
		u.z=x+y-z; u.t=x-y+z;
		zz=min(zz,u.z); tt=min(tt,u.t);
		a.push_back(u);
	}
	fr(i,0,n-1)
	{
		e.size1=max(e.size1,a[i].y);
		a[i].z-=(zz-1);	e.size2=max(e.size2,a[i].z);
		a[i].t-=(tt-1); e.size3=max(e.size3,a[i].t);
	}
	sort(a.begin(),a.end(),cmp);
	e.update(a[0].y,a[0].z,a[0].t,1);
	fr(i,1,n-1)
	{
		while (a[j].x+d<a[i].x) e.update(a[j].y,a[j].z,a[j].t,-1), j++;
		re+=calc(a[i].y+d,a[i].y-d-1,a[i].z+d,a[i].z-d-1,a[i].t+d,a[i].t-d-1);
		e.update(a[i].y,a[i].z,a[i].t,1);
	}
}

int main()
{
	cin >> type >> n >> d >> m;
	if (type==1) work1();
	else
		if (type==2) work2();
		else work3();
	cout << re << endl;
	return 0;
}

Compilation message

pairs.cpp:1:10: fatal error: bits/stcd++.h: No such file or directory
    1 | #include <bits/stcd++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.