比赛 Asm.Def战记之圣地亚哥“杯2015 评测结果 AAWWWWWWWW
题目名称 Asm.Def的命令 最终得分 20
用户昵称 KZNS 运行时间 0.828 s
代码语言 C++ 内存使用 6.14 MiB
提交时间 2015-10-31 11:10:37
显示代码纯文本
// KZ's
#include <fstream>
using namespace std;

class p {
public:
	double x,y;
}zb[100003];
class poi {
public:
	int x,y,d,lc,rc,l,r;
}tr[200005];
int td=1,iu;
void mat(int l,int r) {
	if (l==r) {
		poi &tu=tr[td];
		td++;
		tu.x=0;
		tu.y=0;
		tu.d=0;
		tu.l=l;
		tu.r=r;
		tu.lc=0;
		tu.rc=0;
		return;
	}
	poi &tu=tr[td];
	td++;
	tu.x=0;
	tu.y=0;
	tu.d=0;
	tu.l=l;
	tu.r=r;
	int md=(l+r)/2;
	tu.lc=td;
	mat(l,md);
	tu.rc=td;
	mat(md+1,r);
}
void ck(int i,int c,p &pu) {
	if (tr[i].l==tr[i].l&&tr[i].l==c) {
		pu=zb[c];
		pu.x+=tr[i].x;
		pu.y+=tr[i].y;
		return;
	}
	if (tr[tr[i].lc].r<c)
		ck(tr[i].rc,c,pu);
	if (c<tr[tr[i].rc].l)
		ck(tr[i].lc,c,pu);
	pu.x+=tr[i].x;
	pu.y+=tr[i].y;
}

void ad(int i,int l,int r,int x,int y) {
	if (l<=tr[i].l&&tr[i].r<=r) {
		tr[i].x+=x;
		tr[i].y+=y;
		return;
	}
	if (tr[tr[i].lc].r<r)
		ad(tr[i].rc,l,r,x,y);
	if (l<tr[tr[i].rc].l)
		ad(tr[i].lc,l,r,x,y);
}
//void xz(int a,int b,int d);
int main() {
	freopen("asm_command.in","r",stdin);
	freopen("asm_command.out","w",stdout);
	int n,q;
	scanf("%d%d",&n,&q);
	for (int i=1;i<=n;i++) {
		zb[i].x=0;
		zb[i].y=i;
	}
	mat(1,n);
	int a,b,x1,y1;
	p pu;
	for (int i=0;i<q;i++) {
		scanf("%d",&iu);
		if (!iu) {
			scanf("%d",&iu);
			ck(1,iu,pu);
			printf("%.1lf %.1lf\n",pu.x,pu.y);
		}
		else if (iu==1) {
			scanf("%d%d%d%d",&a,&b,&x1,&y1);
			ad(1,a,b,x1,y1);
		}
		//else if (iu==2) {
		//	scanf("%d%d%d%d",&a,&b,&iu);
		//	xz(a,b,iu);
		//}
	}
	return 0;
}
// UBWH