結果

問題 No.968 引き算をして門松列(その3)
ユーザー 37zigen
提出日時 2019-12-30 00:54:56
言語 Java11
(openjdk 11.0.5)
結果
AC  
実行時間 1,996 ms
コード長 1,769 Byte
コンパイル時間 2,568 ms
使用メモリ 39,308 KB
最終ジャッジ日時 2019-12-30 00:55:12

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
sample1.txt AC 136 ms
34,212 KB
sample2.txt AC 148 ms
34,728 KB
test01.txt AC 152 ms
35,896 KB
test02.txt AC 708 ms
38,664 KB
test03.txt AC 864 ms
38,616 KB
test04.txt AC 832 ms
38,492 KB
test05.txt AC 860 ms
38,976 KB
test06.txt AC 908 ms
39,116 KB
test07.txt AC 1,272 ms
39,308 KB
test08.txt AC 1,996 ms
39,100 KB
test09.txt AC 1,296 ms
39,076 KB
test10.txt AC 1,704 ms
39,144 KB
テストケース一括ダウンロード

ソースコード

diff #
// This file is a "Hello, world!" in Java language by OpenJDK for wandbox.
import java.util.*;
import java.io.*;

class Main
{
    public static void main(String[] args)
    {
		new Main().run();
	}
	
	boolean check(long[] a){
		if(a[0]==a[1]||a[1]==a[2]||a[2]==a[0]||a[0]<=0||a[1]<=0||a[2]<=0)return false;
		return a[1]==Math.min(a[0],Math.min(a[1],a[2])) || a[1]==Math.max(a[0],Math.max(a[1],a[2]));
	}
	
	long solve(long[] a,long[] c){
//		if(a[0]>a[2]){
//			a[0]^=a[2];a[2]^=a[0];a[0]^=a[2];
//		}
		if(check(a))return 0;
		ArrayList<Long> list=new ArrayList<>();
		list.add(0L);
		for(int i=0;i<3;++i){
			for(int d=-2;d<=2;++d){
				if(a[i]+d>0)
					list.add(a[i]+d);
			}
		}
		for(int i=0;i<a.length;++i){
			for(int j=0;j<a.length;++j){
				for(int d=-2;d<=2;++d){
					if(a[i]-a[j]+d>0)
						list.add(a[i]-a[j]+d);
				}
			}
		}
		long ret=Long.MAX_VALUE;
		for(int i=0;i<list.size();++i){
			for(int j=0;j<list.size();++j){
				for(int k=0;k<list.size();++k){
				    if(i>0&&j>0&&k>0)continue;
					long u=list.get(i),v=list.get(j),w=list.get(k);
					if(check(new long[]{a[0]-u-w,a[1]-u-v,a[2]-v-w})){
						ret=Math.min(ret,c[0]*u+c[1]*v+c[2]*w);
					}
				}
			}
		}
		return ret==Long.MAX_VALUE?-1:ret;
	}
	
	void run(){
		Scanner sc=new Scanner(System.in);
		PrintWriter pw=new PrintWriter(System.out);								
		int T=sc.nextInt();
		for(int t=0;t<T;++t){
			long[] a=new long[3];
			long[] c=new long[3];
			for(int i=0;i<3;++i)a[i]=sc.nextLong();
			for(int i=0;i<3;++i)c[i]=sc.nextLong();
			pw.println(solve(a,c));
		}
		pw.close();
	}
	
	void tr(Object...objects){
		System.out.println(Arrays.deepToString(objects));
	}
}

// OpenJDK reference:
//   http://openjdk.java.net/

// Java language references:
//   http://docs.oracle.com/javase
0