Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
2.0 kB
2
Indexable
Never
package HugoXepLichQuangCao;

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

public class Solution {
	static int n,max_point,start_time,end_time;
	static int[] P,L,A,D,visited,flag;
	static int[][] res;
	public static void main(String[] args) throws Exception {
		System.setIn(new FileInputStream("input.txt"));
		System.setOut(new PrintStream("output.txt"));
		Scanner sc = new Scanner(System.in);
		int tc = sc.nextInt();
		for(int t=1;t<=tc;t++){
			n = sc.nextInt();
			A = new int[n];
			D = new int[n];
			P = new int[4];
			L = new int[4];
			res = new int[4][n];
			visited = new int[4];
			for(int i=1;i<4;i++){
				L[i]=sc.nextInt();
			}
			for(int i=1;i<4;i++){
				P[i]=sc.nextInt();
			}
			for(int i=0;i<n;i++){
				A[i] = sc.nextInt();
				D[i] = sc.nextInt();
			}
			start_time = A[0];
			end_time = A[0]+D[0];
			for(int i=1;i<n;i++){
				start_time = Math.min(start_time, A[i]);
				end_time = Math.max(end_time, A[i]+D[i]);
			}
			max_point = 0;
			BT(0,start_time);
			System.out.println("Case #"+t);
			System.out.println(max_point);
		}
	}
	static void BT(int x,int start){
		if(x==3){
			int sum = 0;
			for(int i=0;i<n;i++){
				int tmp = -1;
				for(int j=1;j<=3;j++){
					tmp = Math.max(tmp, res[i][j]);
				}
				sum+= tmp;
			}
			max_point = Math.max(max_point,sum);
			return;
		}
		for(int i=1;i<=3;i++){
			if(visited[i]==0){
				if(start>end_time-L[i]){
					BT(x+1,start);
				}
				else {
					for(int j= start ;j<=end_time-L[i];j++){
						int l = start;
						int r = start+L[i];
						int point = 0;
						for(int k=0;k<n;k++){
							if(A[k]<=l&&A[k]+D[k]>=r){
								if(res[i-1][k]<P[i]){
									res[i][k] = P[i];
								}
							}
						}
						visited[i] = 1;
						BT(x+1,start+L[i]);
						visited[i] = 0;
						for(int k=0;k<n;k++){
							res[i][k] = 0;
						}
					}
				}
			}
		}
	}
}