比赛 |
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