UVA 11679 – Sub-prime

I was doing this wayy too complicatedly before using an ArrayList and a counter to see if I could greedily find the appropriate match or not. The easiest way I realized mid coding process was to just let the transactions go through and then check at the end if everyone ends up with a positive or 0 balance.

import java.io.PrintWriter;
import java.util.Scanner;

/**
 * 
 * @author Sanchit M. Bhatnagar
 * @see http://uhunt.felix-halim.net/id/74004
 * 
 */
public class P11679 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);
		while (sc.hasNextInt()) {
			int B = sc.nextInt();
			int N = sc.nextInt();
			if (B == N && B == 0)
				break;
			
			int[] reserves = new int[B];
			for (int i = 0; i < reserves.length; i++)
				reserves[i] = sc.nextInt();

			for (int i = 0; i < N; i++) {
				int from = sc.nextInt() - 1;
				int to = sc.nextInt() - 1;
				int amt = sc.nextInt();
				reserves[from] -= amt;
				reserves[to] += amt;
			}

			if (isCool(reserves)) {
				out.println("S");
			} else {
				out.println("N");
			}
		}
		out.close();
		sc.close();
	}

	private static boolean isCool(int[] reserves) {
		for (int i = 0; i < reserves.length; i++) {
			if (reserves[i] < 0)
				return false;
		}
		return true;
	}

}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.