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
#include <iostream>
#include <vector>

using namespace std;

int main(){

    vector<long long> v;    //wyłącz pierwszy
    vector<long long> requirements;//i -> oczko o rozmiarze i

    requirements.push_back(0);
    v.push_back(0);//exclude

    int n;
    scanf("%d", &n);

    for(int i=0; i<n; i++){
        long long temp;
        scanf("%lld", &temp);
        requirements.push_back(temp);
        v.push_back(temp-requirements[requirements.size()-2]);
    }

    /*for(int i =0;i<v.size();i++){
        cout<<v[i]<<" ";
    }
    cout<<endl;*/

    vector<long long> prefixSum;
    prefixSum.push_back(v[0]);
    for(int i =1;i<=n;i++){
        prefixSum.push_back(prefixSum[prefixSum.size()-1]+v[i]);
    }

    /*for(int i=0;i<prefixSum.size();i++)
        cout<<prefixSum[i]<<" ";
    cout<<endl;*/

    bool flag=true;

    for(int rozmiarOczka=1;rozmiarOczka<=n;rozmiarOczka++){
        for(int poczatekOczka=1; poczatekOczka<=n-rozmiarOczka+1; poczatekOczka++){
                int koniecOczka = poczatekOczka+rozmiarOczka-1;
                long long oczkoScore = prefixSum[koniecOczka]-prefixSum[poczatekOczka-1];
            if(requirements[rozmiarOczka]<oczkoScore) flag=false;
        }
    }

    //cout<<flag<<endl;

    if(flag){
        printf("TAK\n%d\n",v.size()-1);
        for(int i=1;i<v.size(); i++)
            printf("%lld ", v[i]);
        printf("\n");
    }
    else{
        printf("NIE\n");
    }

    return 0;

}