Codeforces #53 B "Martian Architecture"

問題:http://www.codeforces.com/problemset/problem/57/B

ラクティス.

ある範囲と底上げ数および求めるべき位置のリストが与えられる.ある範囲において,階段上になるように積み上げられる量+底上げした量の石がその座標に石が積み上げられる.指定された座標における高さの合計を求める.

求めるべき座標に対して,与えられた範囲かどうか判定して範囲内だったら階段上のどの位置にあるか+底上げ量を追加してゆく.

コード

import java.util.*;

public class B_MartianArchitecture {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt(), m = s.nextInt(), k = s.nextInt();
		int[][] a = new int[m][];
		for (; m-- > 0;) {
			a[m] = new int[] { s.nextInt(), s.nextInt(), s.nextInt() };
		}
		long r = 0;
		for (; k-- > 0;) {
			int x = s.nextInt();
			for (int[] b : a) {
				if (b[0] <= x && x <= b[1]) {
					r += x + b[2] - b[0];
				}
			}
		}
		System.out.println(r);
	}
}