aboutsummaryrefslogtreecommitdiff
path: root/Semestr 4/aisd/pracownia2/rozw3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Semestr 4/aisd/pracownia2/rozw3.cpp')
-rw-r--r--Semestr 4/aisd/pracownia2/rozw3.cpp71
1 files changed, 0 insertions, 71 deletions
diff --git a/Semestr 4/aisd/pracownia2/rozw3.cpp b/Semestr 4/aisd/pracownia2/rozw3.cpp
deleted file mode 100644
index 8e3dd2a..0000000
--- a/Semestr 4/aisd/pracownia2/rozw3.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-#include<bits/stdc++.h>
-using namespace std;
-
-#define RIGHT 0
-#define LEFT 1
-
-const int MAXN = 2e3 + 10;
-const int M = 5e5 + 10;
-
-int n, H[MAXN], dp[2][M*2];
-bool vis[2][M*2], both[2][M*2];
-
-int get_val()
-
-int main() {
- ios_base::sync_with_stdio(false);
- cin.tie();
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> H[i];
- }
-
- int sum = 0, K = 0;
- vis[K^1][0] = true;
- for (int i = 0; i < n; i++) {
- int h = H[i];
- for (int cur = -sum; cur <= sum; ++cur) {
- vis[K][cur + M] |= vis[K^1][cur + M];
- both[K][cur + M] |= both[K^1][cur + M];
- dp[K][cur + M] = max({dp[K][cur + M], dp[K^1][cur + M]});
- if (vis[K][cur + M]) {
- int val = dp[K][cur + M];
- int left = cur + M - h;
- int right = cur + M + h;
-
- if (cur - h >= 0) {
- both[K][right] = true;
- }
- vis[K][right] = true;
- dp[K][right] = max({dp[K][right], dp[K^1][right], dp[K^1][right] + h});
-
- if (cur + h <= 0) {
- both[K][left]= true;
- }
- vis[K][left] = true;
- dp[K][left] = max({dp[K][left], dp[K^1][left], dp[K^1][left] + h});
- }
- }
- K^=1;
- for (int cur = -sum; cur <= sum; ++cur) {
- dp[K][cur + M] = 0;
- vis[K][cur + M] = 0;
- both[K][cur + M] = 0;
- }
- sum += h;
- }
- K^=1;
- if (both[K][M]) {
- cout << "TAK\n";
- cout << dp[K][M] << "\n";
- } else {
- cout << "NIE\n";
- int best = -sum;
- for (int cur = -sum ; cur <= sum; ++cur) {
- if (both[cur + M] && abs(cur) < abs(best)) {
- best = cur;
- }
- }
- cout << abs(best) << "\n";
- }
-} \ No newline at end of file