View Code of Problem 124

import java.util.*;
class teem{
	int self;
	int point=0;
}
public class Main {
	 public static void main(String[] args) {
		 Scanner in = new Scanner(System.in);
		 int t = in.nextInt();
		 for(int i =0;i<t;i++) {
			 int n=in.nextInt();
			 int m=in.nextInt();
			 int win = in.nextInt();
			 int equal= in.nextInt();
			 int lose = in.nextInt();
			 ArrayList<int[]> allmatch = new ArrayList<int[]>();
			 int count=0;
			 for(int j =0;j<n;j++) {
				 for(int l=j+1;l<n;l++) {
					 int[] match = {j,l};
					 allmatch.add(match);
				 }
			 }
			 ArrayList<teem> AL = new ArrayList<teem>();
			 for(int j =0;j<n;j++) {
				 teem tm = new teem();
				 tm.self=j;
				 AL.add(tm);
			 }
			 System.out.println("Case #"+(i+1)+": "+getmaxandmin(n,m,AL,allmatch,win,equal,lose)[0]+" "+getmaxandmin(n,m,AL,allmatch,win,equal,lose)[1]);

		 }
	 }
	 public static int[] getmaxandmin(int n,int m,ArrayList<teem> allteem,ArrayList<int[]> allmatch,int win,int equal,int lose) {
		 if(allmatch.size()==0) {
			 ArrayList<Integer> allpoint = new ArrayList<Integer>();
			 for(teem t:allteem) {
				 allpoint.add(t.point);
			 }
			 Collections.sort(allpoint);
			 int topmax = allpoint.get(allpoint.size()-m-1);
			 int topmin = allpoint.get(allpoint.size()-m);
			 int[] maxandmin = {topmax,topmin};
			 return maxandmin;
		 }else {
			 int i =0;
			 int[] copy = allmatch.get(i);
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point+=win;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point+=lose;
				 }
			 }
			 //System.out.println(allmatch.get(i)[0]+"win "+allmatch.get(i)[1]+"lose");
			 allmatch.remove(i);
			 int[] case1 = getmaxandmin(n,m,allteem,allmatch,win,equal,lose);
			 allmatch.add(i, copy);
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point-=win;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point-=lose;
				 }
			 }
			 
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point+=equal;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point+=equal;
				 }
			 }
			 //System.out.println(allmatch.get(i)[0]+"equal "+allmatch.get(i)[1]+"equal");
			 allmatch.remove(i);
			 int[] case2 = getmaxandmin(n,m,allteem,allmatch,win,equal,lose);
			 allmatch.add(i, copy);
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point-=equal;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point-=equal;
				 }
			 }
			 
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point+=lose;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point+=win;
				 }
			 }
			 //System.out.println(allmatch.get(i)[0]+"lose "+allmatch.get(i)[1]+"win");
			 allmatch.remove(i);
			 int[] case3 = getmaxandmin(n,m,allteem,allmatch,win,equal,lose);
			 allmatch.add(i, copy);
			 for(teem t:allteem) {
				 if(t.self==allmatch.get(i)[0]) {
					 t.point-=lose;
				 }
				 if(t.self==allmatch.get(i)[1]) {
					 t.point-=win;
				 }
			 }
			 int max= maxinthree(case1[0],case2[0],case3[0]);	
			 int min= mininthree(case1[1],case2[1],case3[1]);
			 int[] maxandmin = {max,min};
			 return maxandmin;
		 }
	 }	 
	 public static int C(int m,int n) {
			double s=1; 
			for(int i =0;i<n;i++) {
				s=s*(m--)/(i+1);
			}
			return (int)s;
		}
	 public static int mininthree(int a,int b,int c) {
		 int temp = a<b?a:b;
		 int max = temp<c?temp:c;
		 return max;
	 }
	 public static int maxinthree(int a,int b,int c) {
		 int temp = a>b?a:b;
		 int max = temp>c?temp:c;
		 return max;
	 }
}

Double click to view unformatted code.


Back to problem 124