Submission #1603837
Source Code Expand
// #include {{{ #include <array> #include <vector> #include <deque> #include <queue> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <string> #include <algorithm> #include <numeric> #include <functional> #include <iterator> #include <tuple> #include <utility> #include <random> #include <limits> #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <cstdint> #include <cassert> // }}} using namespace std; // macros {{{ template<typename T, size_t N> constexpr size_t NELEMS(T (&)[N]) { return N; } template<typename InputIt> void PRINT_RANGE(InputIt first, InputIt last) { for(; first != last; ++first) cout << *first << (first==last ? "" : " "); cout << "\n"; } template<typename T> void PRINT_MATRIX(T mat, size_t nr, size_t nc) { for(size_t r = 0; r < nr; ++r) { for(size_t c = 0; c < nc; ++c) { cout << mat[r][c] << (c==nc-1 ? "" : " "); } cout << "\n"; } } #define FOR(i, start, end) for(int i = (start); i < (end); ++i) #define REP(i, n) FOR(i, 0, n) // }}} // types {{{ using ll = long long; using ull = unsigned long long; // }}} ll N, M, Q; vector<vector<int>> S; vector<vector<ll>> V; // 頂点数 vector<vector<ll>> EH; // 水平な辺の数 vector<vector<ll>> EV; // 垂直な辺の数 void init() { V.assign(N+1, vector<ll>(M+1, 0)); FOR(y, 1, N+1) { FOR(x, 1, M+1) { V[y][x] = V[y-1][x] + V[y][x-1] - V[y-1][x-1] + S[y][x]; } } EH.assign(N+1, vector<ll>(M+1, 0)); EV.assign(N+1, vector<ll>(M+1, 0)); FOR(y, 1, N+1) { FOR(x, 1, M+1) { EH[y][x] = EH[y-1][x] + EH[y][x-1] - EH[y-1][x-1]; if(S[y][x] == 1 && S[y][x-1] == 1) ++EH[y][x]; EV[y][x] = EV[y-1][x] + EV[y][x-1] - EV[y-1][x-1]; if(S[y][x] == 1 && S[y-1][x] == 1) ++EV[y][x]; } } #if DEBUG PRINT_MATRIX(V, N+1, M+1); PRINT_MATRIX(EH, N+1, M+1); PRINT_MATRIX(EV, N+1, M+1); #endif } void solve() { init(); REP(_, Q) { int x1, y1; int x2, y2; cin >> y1 >> x1; cin >> y2 >> x2; ll v = V[y2][x2] - V[y2][x1-1] - V[y1-1][x2] + V[y1-1][x1-1]; ll eh = EH[y2][x2] - EH[y2][x1] - EH[y1-1][x2] + EH[y1-1][x1]; ll ev = EV[y2][x2] - EV[y2][x1-1] - EV[y1][x2] + EV[y1][x1-1]; ll ans = v - eh - ev; cout << ans << "\n"; } } int main() { cin >> N >> M >> Q; S.assign(N+1, vector<int>(M+1, false)); FOR(y, 1, N+1) { string s; cin >> s; transform(begin(s), end(s), begin(S[y])+1, [](char c) { return c == '1' ? 1 : 0; }); } //PRINT_MATRIX(S, N+1, M+1); solve(); return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Nuske vs Phantom Thnook |
User | yumsiim |
Language | C++14 (GCC 5.4.1) |
Score | 700 |
Code Size | 2820 Byte |
Status | AC |
Exec Time | 801 ms |
Memory | 112384 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 700 / 700 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | s1.txt, s2.txt |
All | 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, s1.txt, s2.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01.txt | AC | 737 ms | 111232 KB |
02.txt | AC | 794 ms | 111104 KB |
03.txt | AC | 738 ms | 110976 KB |
04.txt | AC | 786 ms | 110464 KB |
05.txt | AC | 738 ms | 111360 KB |
06.txt | AC | 798 ms | 110976 KB |
07.txt | AC | 712 ms | 105472 KB |
08.txt | AC | 762 ms | 106624 KB |
09.txt | AC | 711 ms | 95744 KB |
10.txt | AC | 801 ms | 110976 KB |
11.txt | AC | 735 ms | 111232 KB |
12.txt | AC | 625 ms | 40448 KB |
13.txt | AC | 486 ms | 1920 KB |
14.txt | AC | 498 ms | 1536 KB |
15.txt | AC | 453 ms | 640 KB |
16.txt | AC | 496 ms | 1024 KB |
17.txt | AC | 481 ms | 1408 KB |
18.txt | AC | 493 ms | 1024 KB |
19.txt | AC | 482 ms | 1152 KB |
20.txt | AC | 751 ms | 99456 KB |
21.txt | AC | 718 ms | 110592 KB |
22.txt | AC | 794 ms | 110976 KB |
23.txt | AC | 497 ms | 2176 KB |
24.txt | AC | 792 ms | 110976 KB |
25.txt | AC | 447 ms | 640 KB |
26.txt | AC | 485 ms | 1152 KB |
27.txt | AC | 482 ms | 1024 KB |
28.txt | AC | 494 ms | 1024 KB |
29.txt | AC | 492 ms | 1536 KB |
30.txt | AC | 490 ms | 1152 KB |
31.txt | AC | 714 ms | 111616 KB |
32.txt | AC | 776 ms | 111232 KB |
33.txt | AC | 744 ms | 110976 KB |
34.txt | AC | 788 ms | 111232 KB |
35.txt | AC | 714 ms | 112128 KB |
36.txt | AC | 768 ms | 110720 KB |
37.txt | AC | 718 ms | 110848 KB |
38.txt | AC | 763 ms | 110720 KB |
39.txt | AC | 713 ms | 111360 KB |
40.txt | AC | 783 ms | 111232 KB |
41.txt | AC | 739 ms | 110976 KB |
42.txt | AC | 765 ms | 110720 KB |
43.txt | AC | 707 ms | 112384 KB |
44.txt | AC | 765 ms | 110592 KB |
45.txt | AC | 1 ms | 256 KB |
46.txt | AC | 1 ms | 256 KB |
47.txt | AC | 1 ms | 256 KB |
48.txt | AC | 1 ms | 256 KB |
s1.txt | AC | 1 ms | 256 KB |
s2.txt | AC | 1 ms | 256 KB |