1 해설
-
1
#include <bits/stdc++.h> #define lowbit(x) (x&(-x)) using namespace std; int c[130][130]; int ans=0,maxn=-0x3f3f3f3f; void add(int x,int y,int k) { for(int i=x;i<=129;i+=lowbit(i)) { for(int j=y;j<=129;j+=lowbit(j)) { c[i][j]+=k; } } } int query(int x,int y) { int ans=0; for(int i=x;i>=1;i-=lowbit(i)) { for(int j=y;j>=1;j-=lowbit(j)) { ans+=c[i][j]; } } return ans; } int main() { int d,n; cin>>d>>n; for(int i=1;i<=n;i++) { int x,y,k; scanf("%d%d%d",&x,&y,&k); add(x+1,y+1,k); } for(int i=1;i<=129;i++) { for(int j=1;j<=129;j++) { int i1=i-d; if(i1<=0) { i1=1; } int i2=(i+d); if(i2>=130) { i2=129; } int j1=(j-d); if(j1<=0) { j1=1; } int j2=(j+d); if(j2>=130) { j2=129; } int ans1=query(i2,j2)-query(i2,j1-1)-query(i1-1,j2)+query(i1-1,j1-1); if(ans1>maxn) { ans=1; maxn=ans1; } else if(ans1==maxn) { ans++; } } } cout<<ans<<" "<<maxn; }
- 1
정보
- ID
- 18
- 시간
- 1000ms
- 메모리
- 256MiB
- 난이도
- 10
- 태그
- (N/A)
- 제출 기록
- 1
- 맞았습니다.
- 1
- 아이디