#pragma GCC optimize("O3") #define _USE_MATH_DEFINES #include <bits/stdc++.h> #define BOOST ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define FOR(a, b, c) for(int a = b; a < c; ++a) #define PB push_back #define MP make_pair #define INF (int)1e9+7 #define LLINF 2e18+7 #define ALL(a) a.begin(), a.end() #define SIZE(a) (int)a.size() typedef unsigned long long ULL; typedef long long LL; typedef long double LD; using namespace std; //#define DEBUG vector <LL> constraints; LL MIN = -1e13; int main() { #ifndef DEBUG BOOST; #endif int n; cin >> n; constraints.resize(n + 1); FOR(i, 1, n + 1) { cin >> constraints[i]; } vector <LL> suffix = {constraints[1]}; FOR(i, 2, n + 1) { LL last = constraints[i - 1]; LL curr = constraints[i]; LL v = curr - last; if(v > constraints[1]) { cout << "NIE\n"; return 0; } LL suffsum = v; int id = 1; for(int j = SIZE(suffix) - 1; j >= 0; --j) { suffsum += suffix[j]; id++; if(suffsum > constraints[id]) { cout << "NIE\n"; return 0; } } suffix.push_back(v); } cout << "TAK\n"; cout << suffix.size() << "\n"; for(auto& x : suffix) { cout << x << " "; } 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #pragma GCC optimize("O3") #define _USE_MATH_DEFINES #include <bits/stdc++.h> #define BOOST ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define FOR(a, b, c) for(int a = b; a < c; ++a) #define PB push_back #define MP make_pair #define INF (int)1e9+7 #define LLINF 2e18+7 #define ALL(a) a.begin(), a.end() #define SIZE(a) (int)a.size() typedef unsigned long long ULL; typedef long long LL; typedef long double LD; using namespace std; //#define DEBUG vector <LL> constraints; LL MIN = -1e13; int main() { #ifndef DEBUG BOOST; #endif int n; cin >> n; constraints.resize(n + 1); FOR(i, 1, n + 1) { cin >> constraints[i]; } vector <LL> suffix = {constraints[1]}; FOR(i, 2, n + 1) { LL last = constraints[i - 1]; LL curr = constraints[i]; LL v = curr - last; if(v > constraints[1]) { cout << "NIE\n"; return 0; } LL suffsum = v; int id = 1; for(int j = SIZE(suffix) - 1; j >= 0; --j) { suffsum += suffix[j]; id++; if(suffsum > constraints[id]) { cout << "NIE\n"; return 0; } } suffix.push_back(v); } cout << "TAK\n"; cout << suffix.size() << "\n"; for(auto& x : suffix) { cout << x << " "; } return 0; } |