Submission #1151123


Source Code Expand

#include <cstdio>
#include <iostream>
#include <cmath>
#include <cstring>
#include <sstream>
#include <algorithm>
#include <cstdlib>
#include <map>
#include <queue>
#include <utility>
#include <vector>
#include <set>
#include <memory.h>
#include <iomanip>
#include <bitset>
#include <list>
#include <stack>

using namespace std;

#define mod 1000000007

int main()
{
	int r, c, n;
	cin >> r >> c >> n;
	vector<long long int> sub(100010, mod);
	// sub[i] : i + 1列目 - i列目の値
	map<pair<int, int>, long long int> m;
	vector<vector<int> > rv(100001);
	priority_queue<pair<int, int> > qu;
	for(int i = 0; i < n; i++){
		int rr, cc, a;
		cin >> rr >> cc >> a;
		m[make_pair(rr, cc)] = a;
		qu.push(make_pair(rr, cc));
		rv[rr].push_back(cc);
	}
	while(!qu.empty()){
		int rr = (qu.top()).first;
		int cc = (qu.top()).second;
		// cout << rr << " " << cc << endl;
		if(m[make_pair(rr, cc)] < 0){
			cout << "No" << endl;
			return 0;
		}
		qu.pop();
		if(rr > 1){
			if(m.find(make_pair(rr - 1, cc)) != m.end()){
				// 1つ上の値がわかっているとき
				long long int tmp = m[make_pair(rr, cc)] - m[make_pair(rr - 1, cc)];
				if(sub[rr - 1] == mod){
					sub[rr - 1] = tmp;
					for(int i = 0; i < rv[rr].size(); i++){
						qu.push(make_pair(rr, rv[rr][i]));
					}
					for(int i = 0; i < rv[rr - 1].size(); i++){
						qu.push(make_pair(rr - 1, rv[rr - 1][i]));
					}
				} else if(sub[rr - 1] != tmp){
					cout << "No" << endl;
					return 0;
				}
			} else {
				// 1つ上の値がわかっていないとき
				if(sub[rr - 1] != mod){
					// rr行目とrr - 1行目の差がわかっているときは値を設定する
					m[make_pair(rr - 1, cc)] = m[make_pair(rr, cc)] - sub[rr - 1];
					rv[rr - 1].push_back(cc);
					qu.push(make_pair(rr - 1, cc));
				}
			}
		}
		if(rr < r){
			if(m.find(make_pair(rr + 1, cc)) != m.end()){
				// 1つ下の値がわかっているとき
				long long int tmp = m[make_pair(rr + 1, cc)] - m[make_pair(rr, cc)];
				if(sub[rr] == mod){
					sub[rr] = tmp;
					for(int i = 0; i < rv[rr].size(); i++){
						qu.push(make_pair(rr, rv[rr][i]));
					}
					for(int i = 0; i < rv[rr + 1].size(); i++){
						qu.push(make_pair(rr + 1, rv[rr + 1][i]));
					}
				} else if(sub[rr] != tmp){
					cout << "No" << endl;
					return 0;
				}
			} else {
				// わかっていないとき
				if(sub[rr] != mod){
					// rr + 1行目とrr行目の差がわかっているときは値を設定する
					m[make_pair(rr + 1, cc)] = sub[rr] + m[make_pair(rr, cc)];
					rv[rr + 1].push_back(cc);
					qu.push(make_pair(rr + 1, cc));
				}
			}
		}
	}
	cout << "Yes" << endl;
	return 0;
}

Submission Info

Submission Time
Task D - Grid and Integers
User maple
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2754 Byte
Status WA
Exec Time 412 ms
Memory 21364 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 800
Status
AC × 5
AC × 44
WA × 25
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt, 1_54.txt, 1_55.txt, 1_56.txt, 1_57.txt, 1_58.txt, 1_59.txt, 1_60.txt, 1_61.txt, 1_62.txt, 1_63.txt
Case Name Status Exec Time Memory
0_00.txt AC 3 ms 3328 KB
0_01.txt AC 3 ms 3328 KB
0_02.txt AC 3 ms 3328 KB
0_03.txt AC 3 ms 3328 KB
0_04.txt AC 3 ms 3328 KB
1_00.txt AC 3 ms 3328 KB
1_01.txt AC 2 ms 3328 KB
1_02.txt AC 3 ms 3328 KB
1_03.txt WA 3 ms 3328 KB
1_04.txt AC 3 ms 3328 KB
1_05.txt WA 3 ms 3328 KB
1_06.txt AC 228 ms 13556 KB
1_07.txt AC 259 ms 13556 KB
1_08.txt AC 226 ms 12532 KB
1_09.txt WA 227 ms 12532 KB
1_10.txt AC 246 ms 12020 KB
1_11.txt WA 252 ms 12020 KB
1_12.txt AC 253 ms 12020 KB
1_13.txt WA 250 ms 12020 KB
1_14.txt AC 249 ms 12020 KB
1_15.txt WA 253 ms 12020 KB
1_16.txt AC 217 ms 12020 KB
1_17.txt AC 201 ms 12020 KB
1_18.txt AC 193 ms 12020 KB
1_19.txt AC 211 ms 12020 KB
1_20.txt WA 149 ms 8568 KB
1_21.txt AC 60 ms 6012 KB
1_22.txt AC 10 ms 3712 KB
1_23.txt AC 145 ms 8952 KB
1_24.txt WA 186 ms 9720 KB
1_25.txt WA 139 ms 8568 KB
1_26.txt AC 13 ms 3968 KB
1_27.txt AC 21 ms 4352 KB
1_28.txt WA 248 ms 12148 KB
1_29.txt AC 69 ms 6396 KB
1_30.txt WA 229 ms 11124 KB
1_31.txt AC 84 ms 6904 KB
1_32.txt WA 200 ms 10100 KB
1_33.txt WA 236 ms 11124 KB
1_34.txt AC 23 ms 4480 KB
1_35.txt AC 412 ms 21364 KB
1_36.txt AC 26 ms 4736 KB
1_37.txt WA 80 ms 6648 KB
1_38.txt AC 156 ms 9848 KB
1_39.txt AC 42 ms 5372 KB
1_40.txt AC 161 ms 9976 KB
1_41.txt AC 70 ms 6524 KB
1_42.txt WA 213 ms 10228 KB
1_43.txt WA 156 ms 9208 KB
1_44.txt WA 210 ms 11124 KB
1_45.txt WA 51 ms 5500 KB
1_46.txt WA 232 ms 11124 KB
1_47.txt AC 65 ms 6012 KB
1_48.txt WA 63 ms 5884 KB
1_49.txt AC 18 ms 4224 KB
1_50.txt WA 122 ms 8184 KB
1_51.txt WA 230 ms 11124 KB
1_52.txt AC 13 ms 3968 KB
1_53.txt AC 28 ms 4736 KB
1_54.txt AC 61 ms 6140 KB
1_55.txt AC 93 ms 7160 KB
1_56.txt WA 157 ms 9336 KB
1_57.txt WA 242 ms 11380 KB
1_58.txt WA 200 ms 10612 KB
1_59.txt AC 10 ms 3840 KB
1_60.txt AC 3 ms 3328 KB
1_61.txt AC 3 ms 3328 KB
1_62.txt AC 3 ms 3328 KB
1_63.txt AC 2 ms 3328 KB