답안 #692328

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
692328 2023-02-01T10:57:01 Z NeroZein Trampoline (info1cup20_trampoline) C++14
11 / 100
586 ms 43096 KB
/*
 *    author: NeroZein
 *    created: 01.02.2023 13:03:54
*/
#include <bits/stdc++.h>
using namespace std;

#ifdef Nero
#include "Deb.h"
#else
#define deb(...)
#endif

const int N = 100005; 
const int Log = 21;

map<pair<int,int>, pair<int,int>> dp[Log]; 

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int r, c, n;
	cin >> r >> c >> n;
	map<int, set<int>> se; 
	vector<pair<int,int>> p(n); 
	for (int i = 0; i < n; ++i) {
		pair<int,int> pp;
		cin >> pp.first >> pp.second;
		p[i] = pp;
		se[pp.first].insert(pp.second); 
	}
	sort(p.begin(), p.end()); 
	map<pair<int,int>, int> convert; 
	for (int i = 0; i < n; ++i) {
		int x = p[i].first;
		int y = p[i].second;
		if (se[x-1].empty()) {
			continue; 
		}
		auto it = se[x-1].upper_bound(y); 
		if (it == se[x-1].begin()) {
			continue; 
		}
		--it; 
		dp[0][p[i]] = {x-1, *it}; 
	}
	auto jump = [&](int x, int y, int k) {
		for (int j = 0; j < Log; ++j) {
			if ((k >> j) & 1) {
				auto pp = dp[j][{x, y}];
				x = pp.first, y = pp.second;
			}
		}
		return make_pair(x, y); 
	}; 
	int q;
	cin >> q; 
	while(q--) {
		int xs, ys, xf, yf;
		cin >> xs >> ys >> xf >> yf; 
		if (xf < xs || yf < ys) {
			cout << "NO" << '\n';
			continue;
		}
		if (xf == xs) {
			cout << "YES" << '\n';
			continue; 
		}
		auto it = se[xf-1].upper_bound(yf); 
		if (se[xf-1].empty() || it == se[xf-1].begin()) {
			cout << "NO" << '\n';
			continue; 
		}
		--it; 
		xf--; 
		yf = *it; 
		int dis = xf - xs; 
		auto pp = jump(xf, yf, dis); 
		xf = pp.first, yf = pp.second; 
		cout << (xf == xs && yf >= ys ? "YES" : "NO") << '\n';
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 1364 KB expected YES, found NO [1st token]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 209 ms 24068 KB expected YES, found NO [3rd token]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 317 ms 20712 KB 200000 token(s): yes count is 110486, no count is 89514
2 Correct 359 ms 21828 KB 200000 token(s): yes count is 114664, no count is 85336
3 Correct 397 ms 24464 KB 200000 token(s): yes count is 86232, no count is 113768
4 Correct 408 ms 24556 KB 200000 token(s): yes count is 94603, no count is 105397
5 Correct 376 ms 24556 KB 200000 token(s): yes count is 94148, no count is 105852
6 Correct 438 ms 26296 KB 200000 token(s): yes count is 97163, no count is 102837
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 980 KB expected YES, found NO [1st token]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 586 ms 43096 KB expected YES, found NO [1st token]
2 Halted 0 ms 0 KB -