diff options
author | Franciszek Malinka <franciszek.malinka@gmail.com> | 2021-03-07 17:58:54 +0100 |
---|---|---|
committer | Franciszek Malinka <franciszek.malinka@gmail.com> | 2021-03-07 17:58:54 +0100 |
commit | 647fafedf582a892db8b7f2c2858ad1bad3307db (patch) | |
tree | f158b279b1c09fea849b6dee136d6ab36b963407 /Semestr 4/aisd/Pracownia 2/rozw.cpp | |
parent | 92cb85e139f150d4560e3ddd777732d2f94bf1df (diff) |
Aktualizacja
Diffstat (limited to 'Semestr 4/aisd/Pracownia 2/rozw.cpp')
-rw-r--r-- | Semestr 4/aisd/Pracownia 2/rozw.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Semestr 4/aisd/Pracownia 2/rozw.cpp b/Semestr 4/aisd/Pracownia 2/rozw.cpp new file mode 100644 index 0000000..dd0d700 --- /dev/null +++ b/Semestr 4/aisd/Pracownia 2/rozw.cpp @@ -0,0 +1,59 @@ +#include <bits/stdc++.h> +using namespace std; + +const int MAX_SUM = 1e6; +const int N = 2e3 + 10; + +unordered_map<int, int> sums; +vector<pair<int, int>> v; + +int main() { + int n; + scanf("%d", &n); + sums[0] = 0; + for (int i = 0; i < n; i++) { + int h; + scanf("%d", &h); + v.clear(); + for (auto kv: sums) { + v.push_back(kv); + } + + for (auto kv: v) { + int dif = kv.first, best = kv.second; + cout << dif << " " << best << "\n"; + int aux = 0; + if (dif >= 0) { + aux = h; + } else if (dif + h > 0) { + aux = dif + h; + } + + cout << ">aux: " << aux << " "; + sums[dif + h] = max(sums[dif + h], best + aux); + aux = 0; + if (dif <= 0) { + aux = h; + } else if (dif - h < 0) { + aux = h - dif; + } + cout << aux << "\n"; + sums[dif - h] = max(sums[dif - h], best + aux); + } + cout << "---\n"; + } + for (auto kv: sums) { + printf("%d %d\n", kv.first, kv.second); + } + + if (sums[0] != 0) { + printf("TAK\n%d\n", sums[0]); + } else { + int mini = 1e9; + sums.erase(0); + for (auto kv: sums) { + mini = min(mini, abs(kv.first)); + } + printf("NIE\n%d\n", mini); + } +}
\ No newline at end of file |