UVA 12554 – A Special “Happy Birthday” Song!!!

Interesting problem that is testing my while loop condition writing skills!

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

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

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);

    String[] song = { "Happy", "birthday", "to", "you", "Happy", "birthday", "to", "you", "Happy", "birthday", "to", "Rujia", "Happy", "birthday", "to", "you" };

    int N = sc.nextInt();
    String[] people = new String[N];
    for (int i = 0; i < N; i++) {
      people[i] = sc.next();
    }

    boolean done = false;
    int idxSong = 0;
    int idxPeople = 0;
    while (!done || idxSong != 0) {
      out.println(people[idxPeople] + ": " + song[idxSong]);
      idxPeople++;
      idxSong++;
      if (idxPeople == N) {
        done = true;
        idxPeople = 0;
      }
      if (idxSong == song.length)
        idxSong = 0;
    }

    out.close();
    sc.close();
  }
}

UVA 12503 – Robot Instructions

Simple input parsing. Easy.

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

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

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);

    int T = sc.nextInt();
    for (int i = 0; i < T; i++) {
      int N = sc.nextInt();
      int[] moves = new int[N];
      int ans = 0;
      for (int j = 0; j < N; j++) {
        String input = sc.next();
        if (input.equals("LEFT")) {
          moves[j] = -1;
        } else if (input.equals("RIGHT")) {
          moves[j] = 1;
        } else {
          sc.next();
          moves[j] = moves[sc.nextInt() - 1];
        }
        ans += moves[j];
      }
      out.println(ans);
    }

    out.close();
    sc.close();
  }

}

UVA 12468 – Zapping

Just do it in two cases. Where a < b and where b < a. [java] import java.io.PrintWriter; import java.util.Scanner; /** * * @author Sanchit M. Bhatnagar * @see http://uhunt.felix-halim.net/id/74004 * */ public class P12468 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); PrintWriter out = new PrintWriter(System.out); while (sc.hasNextInt()) { int a = sc.nextInt(); int b = sc.nextInt(); if (a == -1) break; if (b < a) { out.println(Math.min(a - b, 100 - a + b)); } else { out.println(Math.min(b - a, 100 - b + a)); } out.flush(); } out.close(); sc.close(); } } [/java]

UVA 12157 – Tariff Plan

I had initially accidentally written “Case #1” instead of “Case 1” :[

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

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

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);

    int T = sc.nextInt();
    for (int zz = 1; zz <= T; zz++) {
      int N = sc.nextInt();
      int mileCost = 0;
      int juiceCost = 0;
      for (int i = 0; i < N; i++) {
        int talkTime = sc.nextInt();
        mileCost += (int) Math.ceil(talkTime / 30.0) * 10;
        if (talkTime % 30 == 0)
          mileCost += 10;
        juiceCost += (int) Math.ceil(talkTime / 60.0) * 15;
        if (talkTime % 60 == 0)
          juiceCost += 15;
      }
      out.print("Case " + zz + ": ");
      if (mileCost < juiceCost) {
        out.println("Mile " + mileCost);
      } else if (juiceCost < mileCost) {
        out.println("Juice " + juiceCost);
      } else {
        out.println("Mile Juice " + mileCost);
      }
    }

    out.close();
    sc.close();
  }
}

UVA 12015 – Google is Feeling Lucky

Simple!

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

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

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);

    ArrayList<String> ans;
    int N = sc.nextInt();
    for (int i = 1; i <= N; i++) {
      int max = -1;
      ans = new ArrayList<String>();
      for (int j = 0; j < 10; j++) {
        String tmp = sc.next();
        int val = sc.nextInt();
        if (val > max) {
          ans.clear();
          ans.add(tmp);
          max = val;
        } else if (val == max) {
          ans.add(tmp);
        }
      }
      out.println("Case #" + i + ":");
      for (String t : ans) {
        out.println(t);
      }
    }

    out.close();
    sc.close();
  }
}

UVA 11942 – Lumberjack Sequencing

Two linear scans to figure out if its ascending or descending. If one of them works then Ordered else Unordered.

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

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

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);
    int N = sc.nextInt();
    out.println("Lumberjacks:");
    for (int i = 0; i < N; i++) {
      int[] arr = new int[10];
      for (int j = 0; j < 10; j++)
        arr[j] = sc.nextInt();

      int bad = 0;
      for (int j = 1; j < 10; j++) {
        if (arr[j - 1] > arr[j]) {
          bad++;
          break;
        }

      }

      for (int j = 1; j < 10; j++) {
        if (arr[j - 1] < arr[j]) {
          bad++;
          break;
        }
      }

      if (bad == 1) {
        out.println("Ordered");
      } else {
        out.println("Unordered");
      }
    }

    out.close();
    sc.close();
  }

}

UVA 11799 – Horror Dash

Clowns must run at (Math.max)imum speed! :D

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

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

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		PrintWriter out = new PrintWriter(System.out);

		int N = Integer.parseInt(br.readLine());
		for (int i = 1; i &lt;= N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int ans = 0;
			while (st.hasMoreTokens()) {
				ans = Math.max(ans, Integer.parseInt(st.nextToken()));
			}
			out.println(&quot;Case &quot; + i + &quot;: &quot; + ans);
		}
		out.close();
		br.close();
	}
}

UVA 11764 – Jumping Mario

Super simple linear scan.

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

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

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);

		int T = sc.nextInt();
		for (int i = 1; i <= T; i++) {
			int N = sc.nextInt();
			int high = 0;
			int low = 0;
			int last = sc.nextInt();
			for (int j = 1; j < N; j++) {
				int t = sc.nextInt();
				if (t < last) {
					low++;
				} else if (t > last) {
					high++;
				}
				last = t;
			}
			out.println("Case " + i + ": " + high + " " + low);
		}

		out.close();
		sc.close();
	}

}

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

}

UVA 11559 – Event Planning

This was fun. First program so far for which I used an extra class. Easy problem. 8)

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

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

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);

		while (sc.hasNextInt()) {
			int N = sc.nextInt();
			int B = sc.nextInt();
			int H = sc.nextInt();
			int W = sc.nextInt();

			Hotel[] hotels = new Hotel[H];
			for (int i = 0; i < H; i++) {
				hotels[i] = new Hotel();
				hotels[i].price = sc.nextInt();
				for (int j = 0; j < W; j++) {
					hotels[i].maxBeds = Math.max(hotels[i].maxBeds,
							sc.nextInt());
				}
			}
			Arrays.sort(hotels);
			boolean found = false;
			for (int i = 0; i < H; i++) {
				if (hotels[i].price * N <= B && hotels[i].maxBeds >= N) {
					out.println(hotels[i].price * N);
					found = true;
					break;
				}
			}
			if (!found)
				out.println("stay home");
		}
		out.close();
		sc.close();
	}

	private static class Hotel implements Comparable<Hotel> {
		int price;
		int maxBeds;

		@Override
		public int compareTo(Hotel o2) {
			if (this.price == o2.price) {
				return Integer.compare(o2.maxBeds, this.maxBeds);
			} else {
				return Integer.compare(this.price, o2.price);
			}
		}
	}

}