Submission #1151096


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 r, c, n;
vector<long long int> sub(100010, mod);
vector<bool> gotsub(100010, false);
map<pair<int, int>, long long int> m;

bool  cansolve(priority_queue<pair<int, int> > qu)
{
	priority_queue<pair<int, int> > newqu, oldqu = qu;
	while(!qu.empty()){
		int rr = (qu.top()).first;
		int cc = (qu.top()).second;
		// cout << rr << " " << cc << endl;
		if(m[make_pair(rr, cc)] < 0){
			return false;
		}
		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(!gotsub[rr - 1]){
					sub[rr - 1] = tmp;
					gotsub[rr - 1] = true;
				} else if(sub[rr - 1] != tmp){
					return false;
				}
			} else {
				// 1つ上の値がわかっていないとき
				if(gotsub[rr - 1]){
					// rr行目とrr - 1行目の差がわかっているときは値を設定する
					m[make_pair(rr - 1, cc)] = m[make_pair(rr, cc)] - sub[rr - 1];
					qu.push(make_pair(rr - 1, cc));
				} else {
					newqu.push(make_pair(rr, 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(!gotsub[rr]){
					sub[rr] = tmp;
					gotsub[rr] = true;
				} else if(sub[rr] != tmp){
					return false;
				}
			} else {
				// わかっていないとき
				if(gotsub[rr]){
					// rr + 1行目とrr行目の差がわかっているときは値を設定する
					m[make_pair(rr + 1, cc)] = sub[rr] + m[make_pair(rr, cc)];
					qu.push(make_pair(rr + 1, cc));
				} else {
					newqu.push(make_pair(rr, cc));
				}
			}
		}
	}
	if(newqu.size() != oldqu.size()) return cansolve(newqu);
	else return true;
}

int main()
{
	cin >> r >> c >> n;
	// sub[i] : i + 1列目 - i列目の値
	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));
	}
	if(cansolve(qu))cout << "Yes" << endl;
	else cout << "No" << 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 2565 Byte
Status TLE
Exec Time 2107 ms
Memory 560088 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 800
Status
AC × 5
AC × 12
TLE × 57
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 2 ms 1024 KB
0_01.txt AC 2 ms 1024 KB
0_02.txt AC 2 ms 1024 KB
0_03.txt AC 2 ms 1024 KB
0_04.txt AC 2 ms 1024 KB
1_00.txt TLE 2106 ms 450780 KB
1_01.txt TLE 2106 ms 451420 KB
1_02.txt TLE 2106 ms 436216 KB
1_03.txt TLE 2105 ms 432504 KB
1_04.txt TLE 2106 ms 558552 KB
1_05.txt TLE 2107 ms 560088 KB
1_06.txt TLE 2105 ms 357980 KB
1_07.txt TLE 2105 ms 359260 KB
1_08.txt TLE 2106 ms 357724 KB
1_09.txt TLE 2106 ms 357852 KB
1_10.txt TLE 2106 ms 357596 KB
1_11.txt TLE 2106 ms 358108 KB
1_12.txt TLE 2106 ms 360924 KB
1_13.txt TLE 2105 ms 360924 KB
1_14.txt TLE 2106 ms 361052 KB
1_15.txt TLE 2106 ms 358364 KB
1_16.txt TLE 2105 ms 360668 KB
1_17.txt AC 199 ms 15216 KB
1_18.txt AC 158 ms 9716 KB
1_19.txt AC 231 ms 16368 KB
1_20.txt TLE 2106 ms 386760 KB
1_21.txt TLE 2106 ms 406236 KB
1_22.txt TLE 2106 ms 434304 KB
1_23.txt TLE 2106 ms 399452 KB
1_24.txt TLE 2105 ms 308316 KB
1_25.txt TLE 2106 ms 388316 KB
1_26.txt TLE 2105 ms 420020 KB
1_27.txt TLE 2105 ms 391872 KB
1_28.txt TLE 2106 ms 355164 KB
1_29.txt TLE 2106 ms 416604 KB
1_30.txt TLE 2105 ms 335324 KB
1_31.txt TLE 2105 ms 359956 KB
1_32.txt TLE 2105 ms 325352 KB
1_33.txt TLE 2105 ms 336860 KB
1_34.txt TLE 2105 ms 411864 KB
1_35.txt TLE 2106 ms 274732 KB
1_36.txt TLE 2106 ms 400340 KB
1_37.txt TLE 2105 ms 309984 KB
1_38.txt TLE 2105 ms 286300 KB
1_39.txt TLE 2105 ms 391128 KB
1_40.txt TLE 2106 ms 326204 KB
1_41.txt TLE 2106 ms 418652 KB
1_42.txt TLE 2105 ms 329952 KB
1_43.txt TLE 2106 ms 394844 KB
1_44.txt TLE 2105 ms 326876 KB
1_45.txt TLE 2106 ms 362332 KB
1_46.txt TLE 2106 ms 346332 KB
1_47.txt TLE 2106 ms 400092 KB
1_48.txt TLE 2105 ms 395484 KB
1_49.txt TLE 2106 ms 468380 KB
1_50.txt TLE 2106 ms 374108 KB
1_51.txt TLE 2105 ms 334684 KB
1_52.txt TLE 2105 ms 420952 KB
1_53.txt TLE 2105 ms 399964 KB
1_54.txt TLE 2106 ms 400476 KB
1_55.txt TLE 2105 ms 325340 KB
1_56.txt TLE 2106 ms 399324 KB
1_57.txt TLE 2105 ms 354524 KB
1_58.txt TLE 2105 ms 317532 KB
1_59.txt TLE 2106 ms 467700 KB
1_60.txt AC 2 ms 1024 KB
1_61.txt AC 2 ms 1024 KB
1_62.txt AC 2 ms 1024 KB
1_63.txt AC 2 ms 1024 KB