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

using namespace std;

int main()
{
    long int n, z, d, a, licz;
    long int da[100001][4];
    long int temp[1][4];
    cin >> n >> z;
    long int suma=0;
    long int maxDD=0;
    for (long int i=0;i<n;i++){
        cin >> d >> a;
        da[i][0]=d;
        da[i][1]=a;
        da[i][2]=da[i][1]-da[i][0];
        da[i][3]=i+1;
        if(da[i][2]<maxDD){
            maxDD=da[i][2];
        }
        suma=suma+da[i][2];
    }
    if(suma>=maxDD){
        cout << "TAK" << '\n';
    }else{
    cout << "NIE" << '\n';
    return 0;
    }
    licz = 0;
    while (licz<n){
        if(da[licz][2]>=0){
            if(da[licz][0]<=z){
                cout << da[licz][3] << ' ';
                for (long int j=licz;j<n;j++){
                    da[licz][0]=da[licz+1][0];
                    da[licz][1]=da[licz+1][1];
                    da[licz][2]=da[licz+1][2];
                    da[licz][3]=da[licz+1][3];
                }
                n=n-1;
                licz++;
                z=z-da[licz][0]+da[licz][1];
                continue;
            } else {
                temp[licz][0]=da[licz][0];
                temp[licz][1]=da[licz][1];
                temp[licz][2]=da[licz][2];
                temp[licz][3]=da[licz][3];
                da[licz][0]=da[n-1][0];
                da[licz][1]=da[n-1][1];
                da[licz][2]=da[n-1][2];
                da[licz][3]=da[n-1][3];
                da[n-1][0]=temp[licz][0];
                da[n-1][1]=temp[licz][1];
                da[n-1][2]=temp[licz][2];
                da[n-1][3]=temp[licz][3];
                continue;
            }
        } else {
            licz++;
        }
    }
    licz = 0;
    long int maks=0;
    long int nr_maks=-1;
    while (licz<n){
        for(long int m=0;m<n;m++){
            if(da[m][0]>maks){
                maks=da[m][0];
                nr_maks=m;
            }
        }
        cout << da[nr_maks][3] << ' ';
        da[nr_maks][0]=0;
        maks=0;
        nr_maks=-1;
        licz++;

    }
    return 0;
}