結果
問題 | No.2696 Sign Creation |
ユーザー | SSRS |
提出日時 | 2024-03-22 23:34:34 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 75 ms / 2,500 ms |
コード長 | 2,002 bytes |
コンパイル時間 | 2,067 ms |
コンパイル使用メモリ | 215,896 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-05-17 18:21:02 |
合計ジャッジ時間 | 3,655 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 1 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,940 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,944 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | AC | 3 ms
6,940 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 3 ms
6,940 KB |
testcase_11 | AC | 3 ms
6,944 KB |
testcase_12 | AC | 3 ms
6,944 KB |
testcase_13 | AC | 75 ms
6,940 KB |
testcase_14 | AC | 30 ms
6,940 KB |
testcase_15 | AC | 26 ms
6,944 KB |
testcase_16 | AC | 67 ms
6,944 KB |
testcase_17 | AC | 23 ms
6,940 KB |
testcase_18 | AC | 14 ms
6,944 KB |
testcase_19 | AC | 29 ms
6,944 KB |
testcase_20 | AC | 4 ms
6,940 KB |
testcase_21 | AC | 26 ms
6,940 KB |
testcase_22 | AC | 26 ms
6,944 KB |
testcase_23 | AC | 25 ms
6,944 KB |
testcase_24 | AC | 25 ms
6,940 KB |
testcase_25 | AC | 36 ms
6,940 KB |
testcase_26 | AC | 22 ms
6,940 KB |
testcase_27 | AC | 28 ms
6,940 KB |
testcase_28 | AC | 20 ms
6,944 KB |
testcase_29 | AC | 22 ms
6,944 KB |
testcase_30 | AC | 22 ms
6,944 KB |
testcase_31 | AC | 66 ms
6,944 KB |
testcase_32 | AC | 2 ms
6,940 KB |
testcase_33 | AC | 2 ms
6,940 KB |
testcase_34 | AC | 2 ms
6,940 KB |
testcase_35 | AC | 1 ms
6,944 KB |
testcase_36 | AC | 2 ms
6,940 KB |
testcase_37 | AC | 2 ms
6,944 KB |
testcase_38 | AC | 2 ms
6,940 KB |
testcase_39 | AC | 2 ms
6,944 KB |
testcase_40 | AC | 1 ms
6,940 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; int main(){ int H, W, N, D; cin >> H >> W >> N >> D; vector<int> X(N), Y(N); for (int i = 0; i < N; i++){ cin >> X[i] >> Y[i]; X[i]--; Y[i]--; } vector<vector<int>> idx(H, vector<int>(W, -1)); for (int i = 0; i < N; i++){ idx[X[i]][Y[i]] = i; } vector<int> C(N, -1); int cnt = 0; vector<int> VC; int cnt2 = 0; for (int i = 0; i < N; i++){ if (C[i] == -1){ C[i] = cnt; queue<int> Q; Q.push(i); int V = 0; while (!Q.empty()){ int v = Q.front(); Q.pop(); V++; for (int dx = -D; dx <= D; dx++){ for (int dy = -(D - abs(dx)); dy <= D - abs(dx); dy++){ int x = X[v] + dx; int y = Y[v] + dy; if (0 <= x && x < H && 0 <= y && y < W){ if (idx[x][y] != -1){ if (C[idx[x][y]] == -1){ C[idx[x][y]] = cnt; Q.push(idx[x][y]); } } } } } } VC.push_back(V); if (V >= 2){ cnt2++; } cnt++; } } int mn = N + 1, mx = 0; for (int i = 0; i < H; i++){ for (int j = 0; j < W; j++){ if (idx[i][j] == -1){ set<int> st; for (int dx = -D; dx <= D; dx++){ for (int dy = -(D - abs(dx)); dy <= D - abs(dx); dy++){ int x = i + dx; int y = j + dy; if (0 <= x && x < H && 0 <= y && y < W){ if (idx[x][y] != -1){ st.insert(C[idx[x][y]]); } } } } if (!st.empty()){ int tmp = cnt2; for (int x : st){ if (VC[x] >= 2){ tmp--; } } tmp++; mn = min(mn, tmp); mx = max(mx, tmp); } else { mn = min(mn, cnt2); mx = max(mx, cnt2); } } } } cout << mn << ' ' << mx << endl; }