| ||||||||||
| 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 | |||||||||
因为数组大小不知道,我每次计算到1025,不然就WA,为什么????#include <cstdio>
#include <iostream>
using namespace std;
int s,c[1029][1029];
int lowbit(int x)
{
return x&(-x);
}
void modif(int x,int y,int val )
{
int i,j;
for(i=x; i<=1029; i+=lowbit(i) )
for(j=y; j<=1029; j+=lowbit(j) )
c[i][j] += val;
}
int getsum(int x, int y)
{
int i, j, ans=0;
for(i=x; i>0; i-=lowbit(i) )
for(j=y; j>0; j-=lowbit(j) )
ans += c[i][j];
return ans;
}
int main()
{
int t , i , j , s , x , y , xx ,yy , p , w;
while( scanf("%d",&t) != EOF )
{
if( t==0 )
{
scanf("%d", &s);
for(i=0; i<=s; i++ )
for(j=0; j<=i; j++ )
c[i][j] = c[j][i] = 0;
continue;
}
if( t==1 )
{
scanf("%d%d%d", &x, &y, &p);
x++; y++;
modif(x, y, p);
continue;
}
if( t==2 )
{
scanf("%d%d%d%d", &x, &y, &xx, &yy);
x++; y++;
xx++; yy++;
w = getsum(xx,yy) - getsum(x-1,yy) - getsum(xx,y-1) + getsum(x-1,y-1);
printf("%d\n",w);
continue;
}
if( t==3 )
return 0;
else
return 0;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator