답안 #1008900

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1008900 2024-06-27T04:48:37 Z PenguinsAreCute Trampoline (info1cup20_trampoline) C++17
62 / 100
2000 ms 65984 KB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 420690;
const int INF = 1210201069;
#pragma GCC optimize("O3")
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--;) {
		int ptr = 0;
		for(auto [j, k]: seg[i<<1]) {
			while(seg[i<<1|1][ptr].first<k) ptr++;
			seg[i].push_back({j,seg[i<<1|1][ptr].second});
		}
	}
}
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;
}
int read() {
	int x = 0;
	char c;
    c=getchar_unlocked();
	while(c>='0'&&c<='9') {
		x=(x<<3)+(x<<1)+(c&15);
        c=getchar_unlocked();
	}
	return x;
}
main() {
	int r, c, n; r = read(); c = read(); n = read();
	vector<int> v; int x[n], y[n];
	for(int i=0;i<n;i++) {
			x[i]=read();y[i]=read();
		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 = read();
	while(t--) {
		int x1, y1, x2, y2;
		x1=read();y1=read();x2=read();y2=read();
		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");
	}
}

Compilation message

trampoline.cpp:39:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   39 | main() {
      | ^~~~
trampoline.cpp: In function 'int main()':
trampoline.cpp:40:6: warning: variable 'r' set but not used [-Wunused-but-set-variable]
   40 |  int r, c, n; r = read(); c = read(); n = read();
      |      ^
trampoline.cpp:40:9: warning: variable 'c' set but not used [-Wunused-but-set-variable]
   40 |  int r, c, n; r = read(); c = read(); n = read();
      |         ^
# 결과 실행 시간 메모리 Grader output
1 Correct 42 ms 46928 KB 200 token(s): yes count is 21, no count is 179
2 Correct 41 ms 46932 KB 200 token(s): yes count is 70, no count is 130
3 Correct 46 ms 46764 KB 197 token(s): yes count is 25, no count is 172
# 결과 실행 시간 메모리 Grader output
1 Correct 195 ms 56256 KB 4000 token(s): yes count is 99, no count is 3901
2 Correct 203 ms 56148 KB 4000 token(s): yes count is 91, no count is 3909
3 Correct 787 ms 54976 KB 4000 token(s): yes count is 4000, no count is 0
4 Correct 205 ms 56484 KB 4000 token(s): yes count is 1991, no count is 2009
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2043 ms 30008 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 46928 KB 5000 token(s): yes count is 3238, no count is 1762
2 Correct 46 ms 46824 KB 5000 token(s): yes count is 3837, no count is 1163
3 Correct 53 ms 46672 KB 5000 token(s): yes count is 4104, no count is 896
4 Correct 111 ms 46960 KB 5000 token(s): yes count is 3934, no count is 1066
5 Correct 39 ms 46940 KB 5000 token(s): yes count is 3384, no count is 1616
6 Correct 174 ms 46932 KB 5000 token(s): yes count is 3390, no count is 1610
# 결과 실행 시간 메모리 Grader output
1 Correct 266 ms 64960 KB 200000 token(s): yes count is 171404, no count is 28596
2 Correct 230 ms 65984 KB 200000 token(s): yes count is 161254, no count is 38746
3 Execution timed out 2009 ms 29476 KB Time limit exceeded
4 Halted 0 ms 0 KB -