Submission #2859655


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 112 ms
Memory 21844 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 300
Status
WA × 3
WA × 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 WA 93 ms 21716 KB
a02 WA 93 ms 21460 KB
a03 WA 92 ms 19924 KB
b04 WA 90 ms 21844 KB
b05 WA 103 ms 19924 KB
b06 WA 110 ms 20688 KB
b07 WA 110 ms 19412 KB
b08 WA 111 ms 19668 KB
b09 WA 112 ms 18644 KB
b10 WA 91 ms 19924 KB
b11 WA 103 ms 21844 KB
b12 WA 110 ms 20692 KB