比赛 |
Asm.Def战记之圣地亚哥“杯2015 |
评测结果 |
AAAAAAAWWW |
题目名称 |
Asm.Def的命令 |
最终得分 |
70 |
用户昵称 |
asddddd |
运行时间 |
1.059 s |
代码语言 |
C++ |
内存使用 |
7.87 MiB |
提交时间 |
2015-10-31 11:07:30 |
显示代码纯文本
//
// main.cpp
// asm_command
//
// Created by apple on 15/10/31.
// Copyright (c) 2015年 刘泽群. All rights reserved.
//
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define maxn 110000
using namespace std;
typedef pair<double, double> pi;
double addx[4*maxn],addy[4*maxn],id[maxn];
void build(int l,int r,int c){
if (l==r) {
id[l]=c;
return;
}
int mid=(l+r)/2;
build(l, mid, c<<1);
build(mid+1, r, c<<1|1);
return ;
}
void adddx(int l,int r,int la,int ra,int c,int x){
if (la<=l&&ra>=r) {
addx[c]+=x;
return;
}
int mid=(l+r)/2;
if (ra<=mid) {
adddx(l, mid, la, ra, c<<1, x);
}
else if (la>mid) {
adddx(mid+1, r, la, ra, c<<1|1, x);
}
else{
adddx(l, mid, la, ra, c<<1, x);
adddx(mid+1, r, la, ra, c<<1|1, x);
}
}
void adddy(int l,int r,int la,int ra,int c,int x){
if (la<=l&&ra>=r) {
addy[c]+=x;
return;
}
int mid=(l+r)/2;
if (ra<=mid) {
adddy(l, mid, la, ra, c<<1, x);
return;
}
else if (la>mid) {
adddy(mid+1, r, la, ra, c<<1|1, x);
return;
}
else{
adddy(l, mid, la, ra, c<<1, x);
adddy(mid+1, r, la, ra, c<<1|1, x);
}
}
pi seaarch(int x){
int k=id[x];
pi ans(0+addx[k],x+addy[k]);
k>>=1;
while (k!=0) {
ans.first+=addx[k];
ans.second+=addy[k];
k>>=1;
}
return ans;
}
int main() {
freopen("asm_command.in","r",stdin);
freopen("asm_command.out","w",stdout);
int n,q;
cin>>n>>q;
build(1, n, 1);
for (int i=1; i<=q; i++) {
int type;
cin>>type;
if (type==1) {
int l,r;
cin>>l>>r;
int ax,ay;
cin>>ax>>ay;
adddx(1, n, l, r, 1, ax);
adddy(1, n, l, r, 1, ay);
}
else if(type==0){
int a;
cin>>a;
pi asd=seaarch(a);
printf("%.1lf %.1lf",asd.first,asd.second);
cout<<endl;
}
else {
cout<<"whatever,i don't know how to rotate"<<endl;
}
}
return 0;
}