제출 #248751

#제출 시각아이디문제언어결과실행 시간메모리
248751promaT-Covering (eJOI19_covering)C++17
25 / 100
382 ms102404 KiB
#include <bits/stdc++.h> #define endl "\n" #define int long long #define see(x) cerr<<#x<<"="<<x<<endl; using namespace std; const int N = 1002; int m, n, k, used[N*N], cnt, ans, val[N*N], spec[N*N]; map <pair <int, int>, int> def; vector <int> g[N*N], values; void dfs (int v) { used[v] = 1; if (spec[v]) ++ cnt; else values.push_back(val[v]); for (auto i: g[v]) if (!used[i]) dfs(i); } int32_t main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> m >> n; int temp = 1; for (int i = 0; i < m; ++ i) for (int j = 0; j < n; ++ j) { int a; cin >> a; val[temp] = a; def[{i, j}] = temp ++; } cin >> k; for (int i = 0; i < k; ++ i) { int x, y; cin >> x >> y; ans += val[def[{x,y}]]; spec[def[{x,y}]] = 1; if (x) { g[def[{x,y}]].push_back(def[{x-1,y}]); g[def[{x-1,y}]].push_back(def[{x,y}]); } if (y) { g[def[{x,y}]].push_back(def[{x,y-1}]); g[def[{x,y-1}]].push_back(def[{x,y}]); } if (x < m-1) { g[def[{x,y}]].push_back(def[{x+1,y}]); g[def[{x+1,y}]].push_back(def[{x,y}]); } if (y < n-1) { g[def[{x,y}]].push_back(def[{x,y+1}]); g[def[{x,y+1}]].push_back(def[{x,y}]); } } temp = 1; for (int i = 0; i < m; ++ i) for (int j = 0; j < n; ++ j) { if (!used[temp]) { values.clear(); cnt = 0; dfs(temp); sort(values.rbegin(), values.rend()); if (3*cnt > values.size()) { cout << "No\n"; return 0; } for (int k = 0; k < 3*cnt; ++ k) ans += values[k]; } ++ temp; } cout << ans << endl; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

covering.cpp: In function 'int32_t main()':
covering.cpp:30:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
     for (int i = 0; i < m; ++ i)
     ^~~
covering.cpp:37:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
     cin >> k;
     ^~~
covering.cpp:70:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
        if (3*cnt > values.size()) {
            ~~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...