Submission #582634

#TimeUsernameProblemLanguageResultExecution timeMemory
582634MilosMilutinovicDomino (COCI15_domino)C++14
100 / 160
4083 ms125588 KiB
/** * author: wxhtzdy * created: 24.06.2022 09:28:57 **/ #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, k; cin >> n >> k; vector<vector<int>> a(n, vector<int>(n)); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } int sum = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { sum += a[i][j]; } } vector<tuple<int, int, int>> b; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i + 1 < n) { b.emplace_back(-a[i][j] - a[i + 1][j], i * n + j, (i + 1) * n + j); } if (j + 1 < n) { b.emplace_back(-a[i][j] - a[i][j + 1], i * n + j, i * n + j + 1); } } } sort(b.begin(), b.end()); b.resize(min((int) b.size(), 41)); int mx = 0, curr = 0; vector<int> cnt(n * n); function<void(int, int)> Gen = [&](int i, int p) { if (p > k || p + (int) b.size() - i < k) { return; } if (i == (int) b.size()) { mx = max(mx, curr); return; } Gen(i + 1, p); if (cnt[get<1>(b[i])] == 0 && cnt[get<2>(b[i])] == 0) { curr -= get<0>(b[i]); cnt[get<1>(b[i])]++; cnt[get<2>(b[i])]++; Gen(i + 1, p + 1); cnt[get<1>(b[i])]--; cnt[get<2>(b[i])]--; curr += get<0>(b[i]); } }; Gen(0, 0); cout << sum - mx << '\n'; return 0; }
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...