제출 #1008851

#제출 시각아이디문제언어결과실행 시간메모리
1008851PenguinsAreCuteTrampoline (info1cup20_trampoline)C++17
62 / 100
2059 ms53372 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 420690;
const int INF = 1210201069;
vector<pair<int,int>> seg[MAXN<<1];
int f(int i, int x) {return (*lower_bound(seg[i].begin(),seg[i].end(),make_pair(x,0))).second;}
void build() {
	for(int i=MAXN;i--;) for(auto [j, k]: seg[i<<1]) {
		int cur = f(i<<1|1,k);
		while(seg[i].size()&&seg[i].back().second==cur)
			seg[i].pop_back();
		seg[i].push_back({j,cur});
	}
}
int qry(int l, int r, int x) {
	stack<int> st;
	for(l+=MAXN,r+=MAXN;l<r;l>>=1,r>>=1) {
		if(l&1) x=f(l++,x);
		if(r&1) st.push(--r);
	}
	while(st.size()) {
		x=f(st.top(),x);
		st.pop();
	}
	return x;
}
main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	int r, c, n; cin >> r >> c >> n;
	vector<int> v; int x[n], y[n];
	for(int i=0;i<n;i++) {
		cin >> x[i] >> y[i];
		v.push_back(x[i]);
		v.push_back(x[i]+1);
	}

	sort(v.begin(),v.end());
	v.resize(unique(v.begin(),v.end())-v.begin());
	for(int i=0;i<n;i++)
		x[i]=lower_bound(v.begin(),v.end(),x[i])-v.begin();
	for(int i=0;i<n;i++)
		seg[x[i]+MAXN].push_back({y[i],y[i]});
	for(int i=0;i<n;i++)
		sort(seg[x[i]+MAXN].begin(),seg[x[i]+MAXN].end());
	for(int i=0;i<MAXN;i++)
		seg[i+MAXN].push_back({INF,INF});
	build();

	int t; cin >> t;
	while(t--) {
		int x1, y1, x2, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		if(x1==x2) {
			cout << (y1<=y2?"Yes\n":"No\n");
			continue;
		}
		if(x1>x2) {
			cout << "No\n";
			continue;
		}
		auto it1 = lower_bound(v.begin(),v.end(),x1);
		auto it2 = lower_bound(v.begin(),v.end(),x2);
		if(it1==v.end()||it2==v.end()||(*it1)!=x1||(*it2)!=x2) {
			cout << "No\n";
			continue;
		}
		cout << (qry(it1-v.begin(),it2-v.begin(),y1)<=y2?"Yes\n":"No\n");
	}
} // noice

컴파일 시 표준 에러 (stderr) 메시지

trampoline.cpp:27:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   27 | main() {
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...