#include<iostream>
using namespace std;
long long t[100000];
long long pref[100000];
long long mx[300];
const long long neg_inf = -1e13;
int n;
void fill_pref(int i) {
if (i > 0) {
pref[i] = pref[i - 1];
}
pref[i] += t[i];
}
int main() {
ios_base::sync_with_stdio(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> mx[i];
}
int curr = 0;
for (int i = 0; i < n; i++) {
long long sum = 0;
for (int j = 0; j < i; j++) {
t[curr] = mx[j] - sum;
fill_pref(curr);
for (int k = 0; k < n && i - k - 1 >= 0; k++) {
long long tmp_sum = pref[curr] - pref[curr - k - 1];
if (tmp_sum > mx[k]) {
t[curr] -= tmp_sum - mx[k];
}
}
fill_pref(curr);
sum += t[curr];
curr++;
}
t[curr] = mx[i] - sum;
pref[curr] = pref[curr - 1] + t[curr];
for (int j = 0; j < n && i - j - 1 >= 0; j++) {
if (pref[curr] - pref[curr - j - 1] > mx[j]) {
cout << "NIE" << endl;
return 0;
}
}
curr++;
t[curr] = neg_inf;
pref[curr] = pref[curr - 1] + t[curr];
curr++;
}
cout << "TAK" << endl << curr - 1 << endl;
for (int i = 0; i < curr - 1; i++) {
cout << t[i] << " ";
}
cout << endl;
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include<iostream> using namespace std; long long t[100000]; long long pref[100000]; long long mx[300]; const long long neg_inf = -1e13; int n; void fill_pref(int i) { if (i > 0) { pref[i] = pref[i - 1]; } pref[i] += t[i]; } int main() { ios_base::sync_with_stdio(0); cin >> n; for (int i = 0; i < n; i++) { cin >> mx[i]; } int curr = 0; for (int i = 0; i < n; i++) { long long sum = 0; for (int j = 0; j < i; j++) { t[curr] = mx[j] - sum; fill_pref(curr); for (int k = 0; k < n && i - k - 1 >= 0; k++) { long long tmp_sum = pref[curr] - pref[curr - k - 1]; if (tmp_sum > mx[k]) { t[curr] -= tmp_sum - mx[k]; } } fill_pref(curr); sum += t[curr]; curr++; } t[curr] = mx[i] - sum; pref[curr] = pref[curr - 1] + t[curr]; for (int j = 0; j < n && i - j - 1 >= 0; j++) { if (pref[curr] - pref[curr - j - 1] > mx[j]) { cout << "NIE" << endl; return 0; } } curr++; t[curr] = neg_inf; pref[curr] = pref[curr - 1] + t[curr]; curr++; } cout << "TAK" << endl << curr - 1 << endl; for (int i = 0; i < curr - 1; i++) { cout << t[i] << " "; } cout << endl; return 0; } |
English