Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.ArrayList;
- public class task4178 {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- int n = in.nextInt();
- long W = in.nextLong();
- long[] value = new long[n];
- long[] width = new long[n];
- for (int i = 0; i < n; i++) {
- width[i] = in.nextLong();
- value[i] = in.nextLong();
- }
- int k = (int) Math.pow(2, n + 1);
- int c = 0;
- long w1 = 0;
- long v1 = 0;
- long w2 = 0;
- long v2 = 0;
- int count = 0;
- ArrayList<pairs> t = new ArrayList<>();
- for (int i = 0; i < k; i++) {
- w2 = 0;
- v2 = 0;
- count = 0;
- for (int j = 0; j < n; j++) {
- if ((i & (1 << j)) != 0) {
- w2 += width[j];
- v2 += value[j];
- count++;
- }
- }
- if (w2 <= W && v2 >= v1) {
- t.add(new pairs(count, i, v2));
- v1 = v2;
- w1 = w2;
- //c = i;
- }
- }
- if (t.isEmpty()) {
- System.out.print(0 + " " + 0);
- System.exit(0);
- }
- long curr = t.get(t.size() - 1).z;
- while (t.get(0).z != curr)
- t.remove(0);
- int min = 20;
- int ind = -1;
- for (int i = 0; i < t.size(); i++)
- if (t.get(i).x < min) {
- min = t.get(i).x;
- ind = i;
- }
- System.out.println(t.get(ind).x + " " + t.get(ind).z);
- int num = t.get(ind).y;
- for (int i = 0; i <= 20; i++)
- if ((num & (1 << i)) != 0 )
- System.out.print((i +1) + " ");
- }
- }
- class pairs {
- int x;
- int y;
- long z;
- public pairs(int a, int b, long c) {
- x = a;
- y = b;
- z = c;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement