Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.6 kB
8
Indexable
package practice;

import java.io.FileInputStream;
import java.util.Scanner;

public class hugovenha {
	static boolean[][] check;
	static int[][] soquantaimoilan,coppy;

	static int N, min, cost;
	static int[][] cong;

	static void try1(int index, int soquan) {
		if (cost > min) {
			return;
		}
		if (index == N) {
			if (min > cost) {
				min = cost;

			}
			return;
		}
		for (int i = 0; i < 3; i++) {
			if (i == 0) {
				cost += cong[index][1];
				try1(index + 1, soquan);
				cost -= cong[index][1];
			}
			if (i == 1) {
				cost += cong[index][1] * 2;
				soquantaimoilan[index][1] = cong[index][1];
				soquantaimoilan[index][0] = 0;
				try1(index + 1, soquan + cong[index][0]);
				cost -= cong[index][1] * 2;
				soquantaimoilan[index][1] = 0;
				soquantaimoilan[index][0] = 0;

			}
			if(i ==2)  {
				int soquanthucte = 0;
				for(int i1 =0 ;i1<N;i1++) {
					if(soquantaimoilan[i1][0] <3) {
						soquanthucte += soquantaimoilan[i1][1];
					}
					
				}
				//soquan = soquanthucte;
				int chien = cong[index][1];
				
				if(soquanthucte>= chien) {
					
					for(int i2 = 0;i2<N;i2++) {
						coppy[i2][0] = soquantaimoilan[i2][0];
						coppy[i2][1] = soquantaimoilan[i2][1];
						
					}
					
					for(int i2 = 0;i2<N;i2++) {
						if(soquantaimoilan[i2][0] <3) {
							if(soquantaimoilan[i2][1] < chien) {
								chien -= soquantaimoilan[i2][1];
								soquantaimoilan[i2][1] = 0;
								continue;
								
							}
							else {
								soquantaimoilan[i2][1] -= chien;
								break;
							}
						}
					}
					for(int i2 = 0;i2<N;i2++) {
						if(soquantaimoilan[i2][1] > 0) {
							soquantaimoilan[i2][0]++;
						}
					}
					 try1(index+1, soquanthucte);
					 
					 for(int i2 = 0;i2<N;i2++) {
						 soquantaimoilan[i2][0]= coppy[i2][0] ;
						 soquantaimoilan[i2][1]=coppy[i2][1] ;
							
						}
					 
					 
					 
					
					
				}
				else {
					break;
				}
				
				
			}
		}
	}

	public static void main(String[] args) throws Exception {
		System.setIn(new FileInputStream("src/practice/input.txt"));
		Scanner scanner = new Scanner(System.in);
		int T = scanner.nextInt();
		for (int t = 1; t <= T; t++) {
			N = scanner.nextInt();
			cong = new int[N][2];
			soquantaimoilan = new int[N][2];
			coppy = new int[N][2];
			for (int i = 0; i < N; i++) {
				cong[i][0] = scanner.nextInt();
				cong[i][1] = scanner.nextInt();
				

			}
			min = Integer.MAX_VALUE;
			cost = 0;
			try1(0, 0);
			System.out.println("#"+t+" "+min);
		}

	}

}
Leave a Comment