Submission #532003

# Submission time Handle Problem Language Result Execution time Memory
532003 2022-03-02T03:22:35 Z 8e7 Two Antennas (JOI19_antennas) C++17
22 / 100
293 ms 30092 KB
//Challenge: Accepted
#include <bits/stdc++.h>
using namespace std;
#ifdef zisk
void debug(){cout << endl;}
template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);}
template<class T> void pary(T l, T r) {
	while (l != r) cout << *l << " ", l++;
	cout << endl;
}
#else
#define debug(...) 0
#define pary(...) 0
#endif
#define ll long long
#define maxn 200005
#define pii pair<int, int>
#define ff first
#define ss second
#define io ios_base::sync_with_stdio(0);cin.tie(0);

const ll inf = 1<<30;
/*
struct beats{
	ll mi[4*maxn], smi[4*maxn], ma[4*maxn], tag[4*maxn], arr[4*maxn], seg[4*maxn];
	//Arr: single point array, ma: second array, seg = max(ma[i] - arr[i]), mi, smi, tag are to maintain ma
	void push(int cur, int l, int r) {
	}
	void pull(int cur, int l, int r) {

	}
	void init(int cur, int l, int r) {
		if (r <= l) return;
		tag[cur] = 0;
		if (r - l == 1) {
			mi[cur] = -inf + 1, smi[cur] = -inf;
			arr[cur] = inf;
			seg[cur] = mi[cur] - arr[cur];
			return;
		}
		int m = (l + r) / 2;
		init(cur*2, l, m), init(cur*2+1, m, r);
		pull(cur, l, r);
	}
		
};
*/
struct segtree{
	ll seg[4*maxn];
	void init(int cur, int l, int r){
		if (r <= l) return;
		seg[cur] = inf;
		if (r - l == 1) return;
		int m = (l + r) / 2;
		init(cur*2, l, m), init(cur*2+1, m, r);
	}
	void modify(int cur, int l, int r, int ind, ll val) {
		if (r <= l) return;
		if (r - l == 1) {
			seg[cur] = val;
			return;
		}
		int m = (l + r) / 2;
		if (ind < m) modify(cur*2, l, m, ind, val);
		else modify(cur*2+1, m, r, ind, val);
		seg[cur] = min(seg[cur*2], seg[cur*2+1]);
	}
	ll query(int cur, int l, int r, int ql, int qr) {
		if (r <= l || ql >= r || qr <= l) return inf;
		if (ql <= l && qr >= r) return seg[cur];
		int m = (l + r) / 2;
		return min(query(cur*2, l, m, ql, qr),query(cur*2+1, m, r, ql, qr));
	}
} tr;
ll h[maxn], ans[maxn];
int a[maxn], b[maxn];
vector<pii> que[maxn], ev[maxn];
void solve(int n) {
	tr.init(1, 0, n);
	for (int i = 0;i < n;i++) ev[i].clear();
	for (int i = 0;i < n;i++) {
		for (auto [id, ch]:ev[i]) {
			debug(id, ch);
			if (ch == 1) tr.modify(1, 0, n, id, h[id]);
			else tr.modify(1, 0, n, id, inf);	
		}
		int l = max(0, i - b[i]), r = max(0, i - a[i]);
		debug(i, h[i], tr.query(1, 0, n, l, r+1));
		ans[0] = max(ans[0], h[i] - tr.query(1, 0, n, l, r+1));	

		l = min(n-1, i+a[i]), r = min(n, i + b[i] + 1);
		ev[l].push_back({i, 1}), ev[r].push_back({i, -1});
	}
}
int main() {
	io
	int n;
	cin >> n;
	for (int i = 0;i < n;i++) {
		cin >> h[i] >> a[i] >> b[i];
	}
	ans[0] = -1;
	int q;
	cin >> q;
	for (int i = 0;i < q;i++) {
		int l, r;
		cin >> l >> r;
		r--, l--;
		que[r].push_back({l, i});
	}
	solve(n);
	for (int i = 0;i < n;i++) h[i] = -h[i];
	solve(n);
	for (int i = 0;i < q;i++) cout << ans[i] << "\n";
}

Compilation message

antennas.cpp: In function 'void solve(int)':
antennas.cpp:12:20: warning: statement has no effect [-Wunused-value]
   12 | #define debug(...) 0
      |                    ^
antennas.cpp:83:4: note: in expansion of macro 'debug'
   83 |    debug(id, ch);
      |    ^~~~~
antennas.cpp:12:20: warning: statement has no effect [-Wunused-value]
   12 | #define debug(...) 0
      |                    ^
antennas.cpp:88:3: note: in expansion of macro 'debug'
   88 |   debug(i, h[i], tr.query(1, 0, n, l, r+1));
      |   ^~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9712 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9712 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 243 ms 28908 KB Output is correct
2 Correct 293 ms 30092 KB Output is correct
3 Correct 190 ms 24124 KB Output is correct
4 Correct 252 ms 30020 KB Output is correct
5 Correct 129 ms 19220 KB Output is correct
6 Correct 244 ms 29900 KB Output is correct
7 Correct 212 ms 26068 KB Output is correct
8 Correct 268 ms 29896 KB Output is correct
9 Correct 48 ms 12544 KB Output is correct
10 Correct 248 ms 29928 KB Output is correct
11 Correct 140 ms 21180 KB Output is correct
12 Correct 246 ms 29996 KB Output is correct
13 Correct 157 ms 26528 KB Output is correct
14 Correct 174 ms 28272 KB Output is correct
15 Correct 156 ms 26188 KB Output is correct
16 Correct 148 ms 26568 KB Output is correct
17 Correct 213 ms 26536 KB Output is correct
18 Correct 152 ms 26472 KB Output is correct
19 Correct 172 ms 26480 KB Output is correct
20 Correct 215 ms 26040 KB Output is correct
21 Correct 149 ms 28504 KB Output is correct
22 Correct 164 ms 28248 KB Output is correct
23 Correct 163 ms 26440 KB Output is correct
24 Correct 152 ms 26976 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 9712 KB Output isn't correct
2 Halted 0 ms 0 KB -