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

using namespace std;


void wczytLista(vector < vector <float> > &Potwory, int ile)
{
int poz;
float dmg, hp;
float roznica;
	for(float i=0; i<ile; i++)
	{
		Potwory[i].push_back(i+1);
		cin >> dmg;
		if(dmg==0)
			dmg=0.1;
		Potwory[i].push_back(dmg);
		cin >> hp;
		Potwory[i].push_back(hp);
		roznica=hp/dmg;
		Potwory[i].push_back(roznica);
		poz=i;
		while(poz>0 && Potwory[poz][3]>Potwory[poz-1][3])
		{
			swap(Potwory[poz],Potwory[poz-1]);
			poz--;
		}
	}
}

void Walka(vector < vector <float> > &Potwory, int ile, float &zdrowie, vector <int> &Pokonani)
{
int pokonani=0;
int pozycja;
int i=0;
	while(pokonani<ile && i<Potwory.size())
	{
	i++;
			if(zdrowie>Potwory[i-1][1] && Potwory.size()>0 && i<=ile)
			{
				zdrowie=zdrowie+Potwory[i-1][2]-Potwory[i-1][1];
				pokonani++;
				Pokonani.push_back(Potwory[i-1][0]);
				pozycja=i-1;
				Potwory.erase(Potwory.begin()+pozycja);
				i=0;
			}
	}	
}

int main()
{
	
vector <int> Pokonani;
vector < vector <float> > Potwory;
int ile;
float zdrowie;
cin >> ile >> zdrowie;
Potwory.resize(ile);

wczytLista(Potwory, ile);
Walka(Potwory, ile, zdrowie, Pokonani);

if(Pokonani.size()==ile)
{
cout << "TAK" << endl;
for(int i=0; i<ile; i++)
	cout << Pokonani[i] << " ";
}
else
	cout << "NIE";
	
return 0;
}