結果
| 問題 | No.60 魔法少女 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2016-05-04 16:48:03 | 
| 言語 | Java (openjdk 23) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1,130 ms / 5,000 ms | 
| コード長 | 1,057 bytes | 
| コンパイル時間 | 1,870 ms | 
| コンパイル使用メモリ | 77,604 KB | 
| 実行使用メモリ | 105,320 KB | 
| 最終ジャッジ日時 | 2024-10-05 06:33:06 | 
| 合計ジャッジ時間 | 12,812 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 10 | 
ソースコード
package yukicoder;
import java.util.Scanner;
public class Main{
	public static void main(String[] args)throws Exception{
		new Main().solve();
	}
	void solve(){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int k=sc.nextInt();
		int[][] table=new int[2000][2000];
		for(int i=0;i<n;i++){
			int x=sc.nextInt()+500;
			int y=sc.nextInt()+500;
			int hp=sc.nextInt();
			table[y][x]+=hp;
		}
		int[][] damage=new int[2000][2000];
		for(int i=0;i<k;i++){
			int x=sc.nextInt()+500;
			int y=sc.nextInt()+500;
			int w=sc.nextInt();
			int h=sc.nextInt();
			int d=sc.nextInt();
			damage[y][x]+=d;damage[y][x+w+1]=-d;
			damage[y+h+1][x]-=d;damage[y+h+1][w+x+1]+=d;
		}
		for(int i=0;i<=1000;i++){
			for(int j=1;j<=1000;j++){
				damage[i][j]+=damage[i][j-1];
			}
		}
		for(int i=0;i<=1000;i++){
			for(int j=1;j<=1000;j++){
				damage[j][i]+=damage[j-1][i];
			}
		}
		long res=0;
		for(int i=0;i<=1000;i++){
			for(int j=0;j<=1000;j++){
				if(table[i][j]>damage[i][j])res+=table[i][j]-damage[i][j];
			}
		}
		System.out.println(res);
	}
}
            
            
            
        