| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Here is my code , who can tell me WHY wa, thx!!!#include <stdio.h>
#define MAX 1025
#define QURRY 2
#define ADD 1
#define INIT 0
#define END 3
#define RET return
#define INT32 int
#define INT64 long long
INT64 sum_t[MAX][MAX];
INT32 s, ins;
INT32 lowbit(INT32 t)
{
RET t & (t ^ (t - 1));
}
INT32 plus(INT32 i,INT32 j,INT32 c)
{
while(i <= s)
{
INT32 tempj = j;
while(tempj <=s)
{
sum_t[i][tempj] += c;
tempj += lowbit(tempj);
}
i += lowbit(i);
}
RET 0;
}
INT64 get_sum(INT32 i,INT32 j)
{
INT64 temp = 0;
while(i > 0)
{
INT32 tempj = j;
while(tempj >0)
{
temp += sum_t[i][tempj];
tempj -= lowbit(tempj);
}
i -= lowbit(i);
}
RET temp;
}
INT32 main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d",&ins) == 1)
{
if(ins == INIT)
{
scanf("%d",&s);
for(INT32 i = 1; i <= s; i++)
for(INT32 j = 1; j <= s; j++)
sum_t[i][j] = 0;
}
else if(ins == ADD)
{
INT32 x, y, c;
scanf("%d%d%d",&x,&y,&c);
x++,y++;
plus(x,y,c);
}
else if(ins == QURRY)
{
INT32 l, b, r, t;
INT64 sum = 0;
scanf("%d%d%d%d",&l,&b,&r,&t);
l++,b++,r++,t++;
sum += get_sum(t,r);
if(b-1 > 0) sum -= get_sum(b-1,r);
if(l-1 > 0) sum -= get_sum(t,l-1);
if(b-1 > 0 && l-1 > 0) sum += get_sum(b-1,l-1);
printf("%lld\n",sum);
}
else if(ins == END) break;
}
RET 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator