HugoVeNha
unknown
plain_text
a year ago
1.1 kB
6
Indexable
package hugovenha; import java.util.Scanner; public class hugovenha { static int T, n, arr[][], min; static void backtrack(int i, int cost, int s0, int s1, int s2){ if(cost >= min) return; if(i==n){ if(cost < min) min = cost; return; } backtrack(i+1, cost + arr[1][i], s0, s1, s2); backtrack(i+1, cost + 2 * arr[1][i], s0 + arr[0][i], s1, s2); int total = s0 + s1 + s2; if(total >= arr[0][i]){ if(s2 >= arr[0][i]){ backtrack(i+1, cost, 0, s0, s1); } else if(s1 + s2 >= arr[0][i]){ backtrack(i+1, cost, 0, s0, s1 + s2 - arr[0][i]); } else{ backtrack(i+1, cost, 0, total - arr[0][i], 0); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); T = sc.nextInt(); for(int t=1; t<=T; t++){ n = sc.nextInt(); arr = new int[n][n]; for(int i=0; i<n; i++){ arr[0][i] = sc.nextInt(); arr[1][i] = sc.nextInt(); } min = Integer.MAX_VALUE; backtrack(0, 0, 0, 0, 0); System.out.println("#"+t+" "+min); } } }
Editor is loading...
Leave a Comment