Submission #1069627

# Submission time Handle Problem Language Result Execution time Memory
1069627 2024-08-22T07:29:34 Z 김은성(#11131) Passport (JOI23_passport) C++17
48 / 100
1115 ms 119332 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll KEY = 1.557e8;
const int INF = 1.557e8;
ll dp[2509][2509];
int lb[200009], rb[200009];
int n, minl[1<<19], maxr[1<<19];
int tree[1<<19];
void update(int v, int l, int r, int idx, int val){
	if(l==r)
		tree[v] = val;
	else{
		int mid = (l+r)/2;
		if(idx <= mid)
			update(2*v, l, mid, idx, val);
		else
			update(2*v+1, mid+1, r, idx, val);
		tree[v] = min(tree[2*v], tree[2*v+1]);
	}
}
int rangemin(int v, int l, int r, int s, int e){
	if(e<l || r<s)
		return INF;
	if(s<=l && r<=e)
		return tree[v];
	int mid = (l+r)/2;
	return min(rangemin(2*v, l, mid, s, e), rangemin(2*v+1, mid+1, r, s, e));
}
void settree(int v, int l, int r){
	if(l==r){
		minl[v] = lb[l];
		maxr[v] = rb[l];
	}
	else{
		int mid = (l+r)/2;
		settree(2*v, l, mid);
		settree(2*v+1, mid+1, r);
		minl[v] = min(minl[2*v], minl[2*v+1]);
		maxr[v] = max(maxr[2*v], maxr[2*v+1]);
	}
}
int minquery(int v, int l, int r, int s, int e){
	if(e<l || r<s)
		return INF;
	if(s<=l && r<=e)
		return minl[v];
	int mid = (l+r)/2;
	return min(minquery(2*v, l, mid, s, e), minquery(2*v+1, mid+1, r, s, e));
}
int maxquery(int v, int l, int r, int s, int e){
	if(e<l || r<s)
		return -1;
	if(s<=l && r<=e)
		return maxr[v];
	int mid = (l+r)/2;
	return max(maxquery(2*v, l, mid, s, e), maxquery(2*v+1, mid+1, r, s, e));
}
int solve(int l, int r){
	if(l==1 && r==n)
		return 0;
	if(dp[l][r] != -1)
		return dp[l][r];
	int pl = minquery(1, 1, n, l, r), pr = maxquery(1, 1, n, l, r);
	//printf("l=%d r=%d pl=%d pr=%d\n",l, r, pl,pr);
	int ret = INF;
	if(pl < l)
		ret = min(ret, solve(pl, r) + 1);
	if(pr > r)
		ret = min(ret, solve(l, pr) + 1);
	ret = min(ret, rangemin(1, 1, n, l, r));
	return dp[l][r] = ret;
}
int ans[200009];
int main(){
	int q, t, i, j, k, x;
	scanf("%d", &n);
	for(i=1; i<=n; i++){
		scanf("%d %d", &lb[i], &rb[i]);
	}
	memset(tree, 127, sizeof(tree));
	settree(1,1, n);
	scanf("%d", &q);
	memset(dp, -1, sizeof(dp));
	vector<int> vec;
	for(i=1; i<=n; i++)
		vec.push_back(i);
	sort(vec.begin(), vec.end(), [](int &u, int &v){return rb[v]-lb[v] < rb[u]-lb[u];});
	for(int u: vec){
		ans[u] = solve(lb[u], rb[u]) + 1;
		update(1, 1, n, u, ans[u]);
	}
	while(q--){
		scanf("%d", &x);
		if(ans[x] >= INF/2)
			ans[x] = -1;
		printf("%d\n", ans[x]);
	}
	return 0;
}

Compilation message

passport.cpp: In function 'int main()':
passport.cpp:76:9: warning: unused variable 't' [-Wunused-variable]
   76 |  int q, t, i, j, k, x;
      |         ^
passport.cpp:76:15: warning: unused variable 'j' [-Wunused-variable]
   76 |  int q, t, i, j, k, x;
      |               ^
passport.cpp:76:18: warning: unused variable 'k' [-Wunused-variable]
   76 |  int q, t, i, j, k, x;
      |                  ^
passport.cpp:77:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   77 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
passport.cpp:79:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   79 |   scanf("%d %d", &lb[i], &rb[i]);
      |   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
passport.cpp:83:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   83 |  scanf("%d", &q);
      |  ~~~~~^~~~~~~~~~
passport.cpp:94:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   94 |   scanf("%d", &x);
      |   ~~~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 7 ms 57944 KB Output is correct
2 Correct 6 ms 57948 KB Output is correct
3 Correct 6 ms 57820 KB Output is correct
4 Runtime error 97 ms 119332 KB Execution killed with signal 11
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 7 ms 57944 KB Output is correct
2 Correct 7 ms 57944 KB Output is correct
3 Correct 6 ms 57944 KB Output is correct
4 Correct 7 ms 57948 KB Output is correct
5 Correct 6 ms 57944 KB Output is correct
6 Correct 6 ms 57948 KB Output is correct
7 Correct 7 ms 57948 KB Output is correct
8 Correct 7 ms 57948 KB Output is correct
9 Correct 7 ms 57948 KB Output is correct
10 Correct 7 ms 57948 KB Output is correct
11 Correct 7 ms 57948 KB Output is correct
12 Correct 10 ms 57948 KB Output is correct
13 Correct 8 ms 57948 KB Output is correct
14 Correct 7 ms 57948 KB Output is correct
15 Correct 9 ms 57948 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 57944 KB Output is correct
2 Correct 7 ms 57944 KB Output is correct
3 Correct 6 ms 57944 KB Output is correct
4 Correct 7 ms 57948 KB Output is correct
5 Correct 6 ms 57944 KB Output is correct
6 Correct 6 ms 57948 KB Output is correct
7 Correct 7 ms 57948 KB Output is correct
8 Correct 7 ms 57948 KB Output is correct
9 Correct 7 ms 57948 KB Output is correct
10 Correct 7 ms 57948 KB Output is correct
11 Correct 7 ms 57948 KB Output is correct
12 Correct 10 ms 57948 KB Output is correct
13 Correct 8 ms 57948 KB Output is correct
14 Correct 7 ms 57948 KB Output is correct
15 Correct 9 ms 57948 KB Output is correct
16 Correct 10 ms 57948 KB Output is correct
17 Correct 184 ms 58096 KB Output is correct
18 Correct 87 ms 57948 KB Output is correct
19 Correct 11 ms 57948 KB Output is correct
20 Correct 1115 ms 58204 KB Output is correct
21 Correct 273 ms 57944 KB Output is correct
22 Correct 7 ms 57948 KB Output is correct
23 Correct 10 ms 58056 KB Output is correct
24 Correct 9 ms 57872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 57944 KB Output is correct
2 Correct 7 ms 57944 KB Output is correct
3 Correct 6 ms 57944 KB Output is correct
4 Correct 7 ms 57948 KB Output is correct
5 Correct 6 ms 57944 KB Output is correct
6 Correct 6 ms 57948 KB Output is correct
7 Correct 7 ms 57948 KB Output is correct
8 Correct 7 ms 57948 KB Output is correct
9 Correct 7 ms 57948 KB Output is correct
10 Correct 7 ms 57948 KB Output is correct
11 Correct 7 ms 57948 KB Output is correct
12 Correct 10 ms 57948 KB Output is correct
13 Correct 8 ms 57948 KB Output is correct
14 Correct 7 ms 57948 KB Output is correct
15 Correct 9 ms 57948 KB Output is correct
16 Correct 10 ms 57948 KB Output is correct
17 Correct 184 ms 58096 KB Output is correct
18 Correct 87 ms 57948 KB Output is correct
19 Correct 11 ms 57948 KB Output is correct
20 Correct 1115 ms 58204 KB Output is correct
21 Correct 273 ms 57944 KB Output is correct
22 Correct 7 ms 57948 KB Output is correct
23 Correct 10 ms 58056 KB Output is correct
24 Correct 9 ms 57872 KB Output is correct
25 Correct 7 ms 57948 KB Output is correct
26 Correct 8 ms 57948 KB Output is correct
27 Correct 11 ms 58068 KB Output is correct
28 Correct 191 ms 57948 KB Output is correct
29 Correct 1104 ms 58448 KB Output is correct
30 Correct 283 ms 58200 KB Output is correct
31 Correct 9 ms 57944 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 57944 KB Output is correct
2 Correct 6 ms 57948 KB Output is correct
3 Correct 6 ms 57820 KB Output is correct
4 Runtime error 97 ms 119332 KB Execution killed with signal 11
5 Halted 0 ms 0 KB -