PKU 1247 Magnificent Meatballs

  • metaballの値を順に足していき、総和の半分と等しくなればそれが答え
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		final Scanner cin = new Scanner(System.in);
		for (int N; (N = cin.nextInt()) != 0;) {
			final int[] metaballs = new int[N];
			int sum = 0;
			for (int n = 0; n < N; ++n) {
				final int metaball = cin.nextInt();
				sum += metaball;
				metaballs[n] = metaball;
			}
			for (int n = 1; n < N; ++n) {
				metaballs[n] += metaballs[n - 1];
			}
			int answer = -1;
			for (int n = 0; n < N; ++n) {
				if (metaballs[n] * 2 == sum) {
					answer = n;
				}
			}
			if (answer == -1) {
				System.out.println("No equal partitioning.");
			} else {
				System.out.printf("Sam stops at position %d and Ella stops at position %d.\n", answer + 1, answer + 2);
			}
		}
	}
}