import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class boh {
public static void main(final String[] args) {
final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
String[] line = reader.readLine().trim().split("\\s+");
int rows = Integer.parseInt(line[0]);
int stamina = Integer.parseInt(line[1]);
List<Enemy> enemies = new ArrayList<Enemy>();
for (int i = 0; i < rows; i++) {
line = reader.readLine().trim().split("\\s+");
int damage = Integer.parseInt(line[0]);
int recovery = Integer.parseInt(line[1]);
enemies.add(new Enemy(damage, recovery, i + 1));
}
Stack<Enemy> stack = new Stack<Enemy>();
downTheWay(stamina, enemies, stack);
System.out.println("NIE");
} catch (IOException e) {
e.printStackTrace();
}
System.exit(0);
}
private static void downTheWay(int stamina, List<Enemy> enemies, Stack<Enemy> stack) {
for(int i=0; i<enemies.size(); i++)
{
Enemy chosen = enemies.remove(i);
if (stamina > chosen.damage) {
stack.push(chosen);
if(enemies.isEmpty())
{
System.out.println("TAK");
StringBuilder sb = new StringBuilder();
for(int j = 0; j<stack.size();j++)
{
sb.append(stack.get(j).idx).append(" ");
}
System.out.println(sb.toString());
System.exit(0);
}
downTheWay(stamina - chosen.damage + chosen.recovery, enemies, stack);
stack.pop();
}
enemies.add(i, chosen);
}
}
private static final class Enemy {
public final int damage;
public final int recovery;
public final int idx;
public Enemy(int damage, int recovery, int idx) {
this.damage = damage;
this.recovery = recovery;
this.idx = idx;
}
}
}
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class boh { public static void main(final String[] args) { final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String[] line = reader.readLine().trim().split("\\s+"); int rows = Integer.parseInt(line[0]); int stamina = Integer.parseInt(line[1]); List<Enemy> enemies = new ArrayList<Enemy>(); for (int i = 0; i < rows; i++) { line = reader.readLine().trim().split("\\s+"); int damage = Integer.parseInt(line[0]); int recovery = Integer.parseInt(line[1]); enemies.add(new Enemy(damage, recovery, i + 1)); } Stack<Enemy> stack = new Stack<Enemy>(); downTheWay(stamina, enemies, stack); System.out.println("NIE"); } catch (IOException e) { e.printStackTrace(); } System.exit(0); } private static void downTheWay(int stamina, List<Enemy> enemies, Stack<Enemy> stack) { for(int i=0; i<enemies.size(); i++) { Enemy chosen = enemies.remove(i); if (stamina > chosen.damage) { stack.push(chosen); if(enemies.isEmpty()) { System.out.println("TAK"); StringBuilder sb = new StringBuilder(); for(int j = 0; j<stack.size();j++) { sb.append(stack.get(j).idx).append(" "); } System.out.println(sb.toString()); System.exit(0); } downTheWay(stamina - chosen.damage + chosen.recovery, enemies, stack); stack.pop(); } enemies.add(i, chosen); } } private static final class Enemy { public final int damage; public final int recovery; public final int idx; public Enemy(int damage, int recovery, int idx) { this.damage = damage; this.recovery = recovery; this.idx = idx; } } } |
English