#include <iostream> #include <vector> #include <algorithm> using namespace std; int64_t maxi_min = -1e13; const int64_t M = 1e5+1; int64_t a[301]; int main() { ios_base::sync_with_stdio(false); int n; cin >> n; for(int i = 0; i < n; ++i) { cin >> a[i]; } vector<int64_t> b; for(int i = 0; i < n; ++i) { int64_t absa = abs(a[i]); int64_t sign = a[i] < 0 ? -1 : 1; int64_t low = absa/(i+1); if(absa%(i+1) == 0) { for(int j = 0; j < i+1; ++j) { b.push_back(sign*low); } } else { int64_t high = low+1; int64_t high_count = absa%(i+1); int64_t low_count = i+1-high_count; for(int j = 1; j <= i+1; ++j) { b.push_back(sign*(absa*j/(i+1)-(absa*(j-1)/(i+1)))); } } b.push_back(maxi_min); } bool ok = true; for(int i = 0; i < n; ++i) { int64_t sum = 0; for(int j = 0; j < i+1; ++j) { sum += b[j]; } if(sum > a[i]) { ok = false; break; } for(int j = i+1; j < b.size(); ++j) { sum += b[j]; sum -= b[j-(i+1)]; if(sum > a[i]) { ok = false; break; } } } if(!ok) { cout << "NIE\n"; } else { cout << "TAK\n" << b.size() << '\n'; for(int64_t i : b) { cout << i << ' '; } cout << '\n'; } }
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 63 64 65 66 67 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int64_t maxi_min = -1e13; const int64_t M = 1e5+1; int64_t a[301]; int main() { ios_base::sync_with_stdio(false); int n; cin >> n; for(int i = 0; i < n; ++i) { cin >> a[i]; } vector<int64_t> b; for(int i = 0; i < n; ++i) { int64_t absa = abs(a[i]); int64_t sign = a[i] < 0 ? -1 : 1; int64_t low = absa/(i+1); if(absa%(i+1) == 0) { for(int j = 0; j < i+1; ++j) { b.push_back(sign*low); } } else { int64_t high = low+1; int64_t high_count = absa%(i+1); int64_t low_count = i+1-high_count; for(int j = 1; j <= i+1; ++j) { b.push_back(sign*(absa*j/(i+1)-(absa*(j-1)/(i+1)))); } } b.push_back(maxi_min); } bool ok = true; for(int i = 0; i < n; ++i) { int64_t sum = 0; for(int j = 0; j < i+1; ++j) { sum += b[j]; } if(sum > a[i]) { ok = false; break; } for(int j = i+1; j < b.size(); ++j) { sum += b[j]; sum -= b[j-(i+1)]; if(sum > a[i]) { ok = false; break; } } } if(!ok) { cout << "NIE\n"; } else { cout << "TAK\n" << b.size() << '\n'; for(int64_t i : b) { cout << i << ' '; } cout << '\n'; } } |