Submission #2859689


Source Code Expand

import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Main main = new Main();
		main.run();
	}

	void run() {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		boolean[] dp=new boolean[10010];

		//初期条件
		dp[0]=true;

		//現在最大どこまで入っているか記録するための変数
		//毎回10000回近くまわすのは無駄。
		int imax=0;

		for (int i = 0; i < N; i++) {

			int buf=sc.nextInt();

			//重複がないように後ろから更新していく。
			for (int j = imax; j>=0; j--) {

				if(dp[j]==true) {
					dp[j+buf]=true;
				}

			}

			imax+=buf;
		}

		for (int j = imax; j > 0; j--) {

			if(dp[j]==true && (j%10!=0)) {
				System.out.println(j);
				return;
			}

		}

	}

	//以下テンプレート

	public static int[] extgcd(int a, int b) {

		int x0 = 1;
		int x1 = 0;

		int y0 = 0;
		int y1 = 1;

		while (b != 0) {
			int q = a / b;
			int r = a % b;

			int x2 = x0 - q * x1;
			int y2 = y0 - q * y1;

			a = b;
			b = r;

			x0 = x1;
			x1 = x2;

			y0 = y1;
			y1 = y2;
		}

		return new int[] { a, x0, y0 };

	}

	static int gcd(int a, int b) {

		if (b == 0)
			return a;

		if (a < b) {
			int t = a;
			a = b;
			b = t;
		}

		return gcd(b, a % b);

	}

	static int lcm(int a, int b) {
		return a * b / gcd(a, b);
	}

	static void swap(int[] a) {
		int t;

		t = a[0];
		a[0] = a[1];
		a[1] = t;

		return;
	}

	static <T> void output(List<T> list) {

		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i));

			if (i != list.size() - 1) {
				System.out.print(" ");
			} else {
				nl();
			}
		}

	}

	static void output(String[][] str) {

		for (int i = 0; i < str.length; i++) {
			for (int j = 0; j < str[i].length; j++) {
				print(str[i][j]);
			}

			nl();
		}

	}

	static void output(boolean flg, String Yes, String No) {

		if (flg) {
			pln(Yes);
		} else {
			pln(No);
		}

	}

	static void output(String[][] str, int digit) {

		String dig = "%" + String.valueOf(digit) + "s";

		for (int i = 0; i < str.length; i++) {
			for (int j = 0; j < str[i].length; j++) {
				System.out.printf(dig, str[i][j]);
			}
			nl();
		}

	}

	static void pln(String str) {
		System.out.println(str);
	}

	static void pln(int x) {
		System.out.println(x);
	}

	static void print(String str) {
		System.out.print(str);
	}

	static void print(int x) {
		System.out.print(x);
	}

	static void print(String str, int times) {
		for (int i = 0; i < times; i++) {
			print(str);
		}
	}

	static void print(int x, int times) {
		for (int i = 0; i < times; i++) {
			print(x);
		}
	}

	static void nl() {
		System.out.println();
	}

}

Submission Info

Submission Time
Task C - Bugged
User poporo
Language Java8 (OpenJDK 1.8.0)
Score 0
Code Size 2876 Byte
Status WA
Exec Time 115 ms
Memory 21972 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status
AC × 2
WA × 1
AC × 8
WA × 4
Set Name Test Cases
Sample a01, a02, a03
All a01, a02, a03, b04, b05, b06, b07, b08, b09, b10, b11, b12
Case Name Status Exec Time Memory
a01 AC 94 ms 18768 KB
a02 AC 93 ms 19924 KB
a03 WA 91 ms 21844 KB
b04 AC 92 ms 21972 KB
b05 AC 106 ms 20948 KB
b06 AC 110 ms 21204 KB
b07 AC 106 ms 19540 KB
b08 AC 113 ms 19540 KB
b09 AC 115 ms 21332 KB
b10 WA 93 ms 21716 KB
b11 WA 107 ms 19412 KB
b12 WA 104 ms 21844 KB