답안 #785386

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
785386 2023-07-17T08:48:46 Z ono_de206 송신탑 (IOI22_towers) C++17
18 / 100
945 ms 23356 KB
#include "towers.h"
#include<bits/stdc++.h>
using namespace std;

#define in insert
#define all(x) x.begin(),x.end()
#define pb push_back
#define eb emplace_back
#define ff first
#define ss second

//#define int long long
 
typedef long long ll;
typedef vector<int> vi;
typedef set<int> si;
typedef multiset<int> msi;
typedef pair<int, int> pii;
typedef vector<pii> vpii;

const int mxn = 1e5 + 10, inf = 2e9 + 10;
int h[mxn], n, lg[mxn], L[mxn], R[mxn], pre[mxn], pos;
pair<int, int> p[mxn][20];
bool sub1;

pair<int, int> get(int l, int r) {
	int k = lg[r - l + 1];
	return max(p[l][k], p[r - (1 << k) + 1][k]);
}

void build(int l, int r) {
	if(l > r) return;
	int pos = get(l, r).ss;
	L[pos] = l;
	R[pos] = r;
	if(l == r) return;
	pre[pos] = 1;
	build(l, pos - 1);
	build(pos + 1, r);
}

void init(int _n, vector<int> H) {
	n = _n;
	for(int i = 1; i <= n; i++) {
		h[i] = H[i - 1];
		p[i][0] = {h[i], i};
	}
	for(int j = 1; j < 20; j++) {
		for(int i = 1; i + (1 << j) - 1 <= n; i++) {
			p[i][j] = max(p[i][j - 1], p[i + (1 << (j - 1))][j - 1]);
		}
	}
	for(int i = 2; i <= n; i++) {
		lg[i] = lg[i / 2] + 1;
	}
	build(1, n);
	for(int i = 1; i <= n; i++) {
		pre[i] += pre[i - 1];
	}
	sub1 = 1;
	pos = get(1, n).ss;
	for(int i = 1; i <= n; i++) {
		if(L[i] < i && R[i] > i && (L[i] > 1 || R[i] < n)) sub1 = 0;
	}
}

int max_towers(int l, int r, int D) {
	l++;
	r++;
	if(l == r) return 1;
	if(sub1) {
		return 1 + (l < pos && r > pos && max(h[l], h[r]) <= h[pos] - D);
	}
	int ans = r - l + 1 - pre[r] + pre[l - 1];
	if(pre[l] - pre[l - 1] == 1 && R[l] == l) ans++;
	if(pre[r] - pre[r - 1] == 1 && L[r] == r) ans++;
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 397 ms 13480 KB Output is correct
2 Correct 742 ms 23040 KB Output is correct
3 Correct 689 ms 23152 KB Output is correct
4 Correct 779 ms 23284 KB Output is correct
5 Correct 793 ms 18664 KB Output is correct
6 Correct 713 ms 23328 KB Output is correct
7 Correct 638 ms 18632 KB Output is correct
8 Correct 0 ms 208 KB Output is correct
9 Correct 1 ms 592 KB Output is correct
10 Correct 1 ms 592 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 336 KB 1st lines differ - on the 1st token, expected: '13', found: '16'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 336 KB 1st lines differ - on the 1st token, expected: '13', found: '16'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 377 ms 18484 KB Output is correct
2 Correct 654 ms 18660 KB Output is correct
3 Correct 700 ms 18644 KB Output is correct
4 Correct 420 ms 18632 KB Output is correct
5 Correct 826 ms 18760 KB Output is correct
6 Correct 662 ms 18660 KB Output is correct
7 Correct 771 ms 18592 KB Output is correct
8 Correct 727 ms 23356 KB Output is correct
9 Correct 574 ms 18620 KB Output is correct
10 Correct 701 ms 22160 KB Output is correct
11 Correct 945 ms 18612 KB Output is correct
12 Correct 907 ms 23304 KB Output is correct
13 Correct 722 ms 18632 KB Output is correct
14 Correct 0 ms 208 KB Output is correct
15 Correct 1 ms 592 KB Output is correct
16 Correct 1 ms 592 KB Output is correct
17 Correct 27 ms 18596 KB Output is correct
18 Correct 39 ms 18616 KB Output is correct
19 Correct 33 ms 18664 KB Output is correct
20 Correct 37 ms 18628 KB Output is correct
21 Correct 28 ms 23264 KB Output is correct
22 Correct 38 ms 18704 KB Output is correct
23 Correct 25 ms 18592 KB Output is correct
24 Correct 40 ms 18656 KB Output is correct
25 Correct 26 ms 18600 KB Output is correct
26 Correct 32 ms 22904 KB Output is correct
27 Correct 2 ms 592 KB Output is correct
28 Correct 1 ms 640 KB Output is correct
29 Correct 1 ms 592 KB Output is correct
30 Correct 1 ms 592 KB Output is correct
31 Correct 1 ms 720 KB Output is correct
32 Correct 1 ms 592 KB Output is correct
33 Correct 1 ms 592 KB Output is correct
34 Correct 1 ms 592 KB Output is correct
35 Correct 1 ms 640 KB Output is correct
36 Correct 1 ms 720 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 320 ms 4688 KB 1st lines differ - on the 1st token, expected: '7197', found: '8004'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 336 KB 1st lines differ - on the 1st token, expected: '13', found: '16'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 397 ms 13480 KB Output is correct
2 Correct 742 ms 23040 KB Output is correct
3 Correct 689 ms 23152 KB Output is correct
4 Correct 779 ms 23284 KB Output is correct
5 Correct 793 ms 18664 KB Output is correct
6 Correct 713 ms 23328 KB Output is correct
7 Correct 638 ms 18632 KB Output is correct
8 Correct 0 ms 208 KB Output is correct
9 Correct 1 ms 592 KB Output is correct
10 Correct 1 ms 592 KB Output is correct
11 Incorrect 0 ms 336 KB 1st lines differ - on the 1st token, expected: '13', found: '16'
12 Halted 0 ms 0 KB -