http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0529
貪欲法か?
→WA
せやろな。
とりあえず全探索で書く
→O(n^4) TLE
流石に通らない
蟻本の計算量減らす手法が使えそう?
→やる 2個ずつ + 二分探索 O(n^2 log n) AC
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); while(true) { int N = stdIn.nextInt(); int M = stdIn.nextInt(); if(N == 0 && M == 0) { break; } int[] P = new int[N+1]; for(int i = 0; i < N; i++) { P[i] = stdIn.nextInt(); } P[N] = 0; int[] k = new int[(N+1)*(N+1)]; //--- N^2 ---// for(int i = 0; i < N+1; i++) { for(int j = 0; j < N+1; j++) { k[i * N + j] = P[i] + P[j]; } } Arrays.sort(k); int S = 0; IN:for(int j = 0; j < M; j++) { for(int i = 0; i < (N+1)*(N+1); i++) { if(Arrays.binarySearch(k, M-j-k[i]) >= 0) { System.out.println(M-j); break IN; } } } } } }