제출 #1270746

#제출 시각아이디문제언어결과실행 시간메모리
1270746goulthenTowers (NOI22_towers)C++20
11 / 100
1805 ms79080 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define ll long long
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define per(i,a,b) for (int i = a; i >= b; i--)
#define fi first
#define se second
#define pii pair<int,int>
#define pb push_back

const int MAXN = 1e6+10;
const int INF = 1e18 + 5;
pii a[MAXN],x[MAXN][2];
bool ok[MAXN];

int32_t main() {
	ios_base::sync_with_stdio(0); cin.tie(nullptr);
	int n;cin >> n;
	rep(i,1,1e6) x[i][1].fi = INF;

	rep(i,1,n) {
		cin >> a[i].fi >> a[i].se;
		x[a[i].fi][0] = max(x[a[i].fi][0], {a[i].se,i});
		x[a[i].fi][1] = min(x[a[i].fi][1], {a[i].se,i});
	}

	set<int> ys;
	rep(i,1,1e6) {
		if (!x[i][0].fi) continue;
		rep(k,0,1) {
			if (ys.find(x[i][k].fi) == ys.end()) {
			ok[x[i][k].se] = 1;
			ys.insert(x[i][k].fi);
			}
		}
	}
	ys.clear();
	per(i,1e6,1) {
		if (!x[i][0].fi) continue;
		rep(k,0,1) {
			if (ys.find(x[i][k].fi) == ys.end()) {
			ok[x[i][k].se] = 1;
			ys.insert(x[i][k].fi);
			}
		}
	}

	rep(i,1,n) cout << ok[i];
	cout << '\n';

	return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...