RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00759

2차원 구간 합

Silver I 실버 I
난이도
2s
시간 제한
256MB
메모리 제한
2
맞았습니다!!
2
제출 수
100.0%
정답률
레이팅

의견: 0

설명

\(N \times N\) 격자에 정수가 하나씩 적혀 있다. \((x, y)\)\(x\)\(y\)열의 칸을 뜻한다.

질의 \((x_1, y_1, x_2, y_2)\)가 주어지면 \((x_1, y_1)\)을 왼쪽 위, \((x_2, y_2)\)를 오른쪽 아래 꼭짓점으로 하는 직사각형 영역에 적힌 모든 수의 합을 구해야 한다. 질의가 많으므로 매번 영역을 처음부터 더하면 시간 안에 답할 수 없다.

제약

\(1 \le N \le 1\,024\), \(1 \le M \le 100\,000\), 각 칸의 수는 절댓값이 \(1\,000\) 이하인 정수.

입력 형식

첫째 줄에 격자의 크기 \(N\)과 질의의 수 \(M\)이 주어진다.

다음 \(N\)개의 줄에 격자의 각 행이 \(N\)개의 정수로 주어진다.

다음 \(M\)개의 줄에 질의 \(x_1\ y_1\ x_2\ y_2\)가 주어진다 (\(x_1 \le x_2\), \(y_1 \le y_2\)).

출력 형식

각 질의마다 직사각형 영역의 합을 한 줄에 하나씩 출력한다.

예제 1
입력
4 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
2 2 3 4
3 4 3 4
1 1 4 4
출력
27
6
64
설명

두 번째 질의는 한 칸 \((3,4)\)의 값 6이다.

예제 2
입력
1 1
-5
1 1 1 1
출력
-5
설명

격자가 한 칸뿐이다.

힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

2차원 구간 합

개요
출제자 난이도 Silver I 실버 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

2차원 구간 합

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8