Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2011-05-30SRM300台を練習していく part6

SRM 312 ParallelepipedUnion

|  SRM 312 ParallelepipedUnion - hama_DU@TopCoderへの道 を含むブックマーク はてなブックマーク -  SRM 312 ParallelepipedUnion - hama_DU@TopCoderへの道

http://www.topcoder.com/stat?c=problem_statement&pm=6498

アホなコードを書いてしまった


public class ParallelepipedUnion {

	public int conv(int x1, int x2, int x3, int x4) {
		if (x2 < x3 || x4 < x1) {
			return 0;
		}
		if (x1 <= x3 && x4 <= x2) {
			return x4 - x3;
		}
		if (x3 <= x1 && x2 <= x4) {
			return x2 - x1;
		}
		if (x3 <= x1 && x2 <= x4) {
			return x2 - x1;
		}
		if (x1 <= x3 && x2 <= x4) {
			return x2 - x3;
		}
		if (x3 <= x1 && x4 <= x2) {
			return x4 - x1;
		}
		return 0;
	}

	public int getVolume(String[] parallelepipeds) {
		String[] c1 = parallelepipeds[0].split(" ");
		String[] c2 = parallelepipeds[1].split(" ");
		int x1 = Integer.valueOf(c1[0]);
		int x2 = Integer.valueOf(c1[3]);
		int y1 = Integer.valueOf(c1[1]);
		int y2 = Integer.valueOf(c1[4]);
		int z1 = Integer.valueOf(c1[2]);
		int z2 = Integer.valueOf(c1[5]);

		int x3 = Integer.valueOf(c2[0]);
		int x4 = Integer.valueOf(c2[3]);
		int y3 = Integer.valueOf(c2[1]);
		int y4 = Integer.valueOf(c2[4]);
		int z3 = Integer.valueOf(c2[2]);
		int z4 = Integer.valueOf(c2[5]);

		int con = conv(x1,x2,x3,x4) * conv(y1,y2,y3,y4) * conv(z1,z2,z3,z4);
		int all = (x2-x1)*(y2-y1)*(z2-z1) + (x4-x3)*(y4-y3)*(z4-z3);


		return all - con;
	}

}