Submission #2859694


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;
			}

		}

		System.out.println(0);

	}

	//以下テンプレート

	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 300
Code Size 2904 Byte
Status AC
Exec Time 115 ms
Memory 23764 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 12
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 93 ms 23764 KB
a02 AC 93 ms 19796 KB
a03 AC 93 ms 18644 KB
b04 AC 92 ms 18644 KB
b05 AC 104 ms 22100 KB
b06 AC 99 ms 19924 KB
b07 AC 107 ms 19924 KB
b08 AC 105 ms 18772 KB
b09 AC 115 ms 21972 KB
b10 AC 92 ms 20948 KB
b11 AC 115 ms 20684 KB
b12 AC 106 ms 18896 KB