#include <iostream> #include <fstream> //#define TESTY using namespace std; #define MAX_RUND 1000 int main() { long zmiany[ MAX_RUND]; long rundy[ MAX_RUND]; int n; #ifdef TESTY ifstream plik; plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex2.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex3.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex4.in"); plik >> n; #endif // TESTY #ifndef TESTY cin >> n; #endif // TESTY for( int i = 0; i < n; i ++) { long k; #ifdef TESTY plik >> k; #endif // TESTY #ifndef TESTY cin >> k; #endif // TESTY zmiany[ i ] = k; // cout << zmiany[ i ] << ' '; } // cout << endl; for( int i = n - 1; i >=0; i -- ) { if( i == 0) rundy[ i ] = zmiany[ 0 ]; else rundy[ i ] = zmiany[ i ] - zmiany[ i - 1] ; } bool warunek; warunek = true; for( long i = 1; i <= n; i ++) { long mx = -100000000; for( long j = 0; j < n - i + 1; j ++) { long sum = 0; for( long k = j; k < j + i; k ++ ) { sum += rundy[ k ]; } if( sum > mx ) mx = sum; } if( mx != zmiany[ i - 1]) warunek = false; // cout << mx << ' '; } // cout << "\n\n"; if( warunek == false ) cout << "NIE\n"; else { cout << "TAK\n"; cout << n << '\n'; for( int i = 0; i < n; i ++ ) { cout << rundy[ 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #include <iostream> #include <fstream> //#define TESTY using namespace std; #define MAX_RUND 1000 int main() { long zmiany[ MAX_RUND]; long rundy[ MAX_RUND]; int n; #ifdef TESTY ifstream plik; plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex2.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex3.in"); // plik.open("/home/alefzero/cpp/olimpic/punktyrankingowe/ex4.in"); plik >> n; #endif // TESTY #ifndef TESTY cin >> n; #endif // TESTY for( int i = 0; i < n; i ++) { long k; #ifdef TESTY plik >> k; #endif // TESTY #ifndef TESTY cin >> k; #endif // TESTY zmiany[ i ] = k; // cout << zmiany[ i ] << ' '; } // cout << endl; for( int i = n - 1; i >=0; i -- ) { if( i == 0) rundy[ i ] = zmiany[ 0 ]; else rundy[ i ] = zmiany[ i ] - zmiany[ i - 1] ; } bool warunek; warunek = true; for( long i = 1; i <= n; i ++) { long mx = -100000000; for( long j = 0; j < n - i + 1; j ++) { long sum = 0; for( long k = j; k < j + i; k ++ ) { sum += rundy[ k ]; } if( sum > mx ) mx = sum; } if( mx != zmiany[ i - 1]) warunek = false; // cout << mx << ' '; } // cout << "\n\n"; if( warunek == false ) cout << "NIE\n"; else { cout << "TAK\n"; cout << n << '\n'; for( int i = 0; i < n; i ++ ) { cout << rundy[ i ] << ' '; } cout << endl; } return 0; } |