답안 #823433

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
823433 2023-08-12T14:05:19 Z I_Love_EliskaM_ Sky Walking (IOI19_walk) C++17
15 / 100
494 ms 102424 KB
#include "walk.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0; i<n; ++i)
#define pb push_back
using ll = int64_t;
const ll inf = 4e18;
#define pi pair<ll,ll>
#define f first
#define s second
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(),x.rend()

#define int ll
const int sz=1<<30;
struct sgt {
	sgt *L, *R; int s;
	sgt() {
		L=R=NULL; s=inf;
	}
	void set(int l, int r, int i, int x) {
		if (r-l==1) {
			s=x; return;
		}
		int m=(l+r)>>1;
		if (i<m) {
			if (!L) L=new sgt();
			L->set(l,m,i,x);
		} else {
			if (!R) R=new sgt();
			R->set(m,r,i,x);
		}
		s = min(L?L->s:inf, R?R->s:inf);
	}
	void set(int i, int x) {
		set(0,sz,i,x);
	}
	int query(int l, int r, int lx, int rx) {
		if (rx<=l || r<=lx) return inf;
		if (lx<=l && r<=rx) return s;
		int m=(l+r)>>1;
		int lq=L?L->query(l,m,lx,rx):inf;
		int rq=R?R->query(m,r,lx,rx):inf;
		return min(lq,rq);
	}
	int query(int l, int r) {
		return query(0,sz,l,r);
	}
};
#undef int

long long min_distance(vector<int>x, vector<int>h, vector<int>l, vector<int>r, vector<int>y, int s, int g) {
	int n=x.size(), m=l.size();
	
	#define int ll

	sgt bottom, top;
	bottom.set(0,0);
	top.set(0,0);
	vector<vector<int>> add(n), del(n);
	del[0].pb(0);
	add[n-1].pb(0);
	forn(i,m) {
		add[l[i]].pb(y[i]);
		del[r[i]].pb(y[i]);
	}
	forn(i,n) {
		vector<pi> toset;
		for(auto&y:add[i]) {
			int f = bottom.query(0,y+1);
			int s = top.query(y,h[i]+1);
			if (min(f,s)==inf) continue;
			f+=y; s-=y;
			int x=min(f,s);
			toset.pb({y,x});
		}
		for(auto&y:del[i]) {
			bottom.set(y,inf);
			top.set(y,inf);
		}
		for(auto&x:toset) {
			bottom.set(x.f,x.s-x.f);
			top.set(x.f,x.s+x.f);
		}
	}
	if (top.s==inf) return -1;
	int f = top.s+x[n-1]-x[0];
	return f;

	#undef int
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 3700 KB Output is correct
2 Correct 401 ms 94496 KB Output is correct
3 Correct 407 ms 80632 KB Output is correct
4 Correct 430 ms 99388 KB Output is correct
5 Correct 494 ms 100216 KB Output is correct
6 Correct 465 ms 102424 KB Output is correct
7 Correct 180 ms 55828 KB Output is correct
8 Correct 339 ms 94008 KB Output is correct
9 Correct 468 ms 98428 KB Output is correct
10 Correct 154 ms 19380 KB Output is correct
11 Correct 8 ms 3412 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 49 ms 3700 KB Output is correct
2 Correct 401 ms 94496 KB Output is correct
3 Correct 407 ms 80632 KB Output is correct
4 Correct 430 ms 99388 KB Output is correct
5 Correct 494 ms 100216 KB Output is correct
6 Correct 465 ms 102424 KB Output is correct
7 Correct 180 ms 55828 KB Output is correct
8 Correct 339 ms 94008 KB Output is correct
9 Correct 468 ms 98428 KB Output is correct
10 Correct 154 ms 19380 KB Output is correct
11 Correct 8 ms 3412 KB Output is correct
12 Correct 405 ms 88424 KB Output is correct
13 Correct 378 ms 95892 KB Output is correct
14 Correct 457 ms 94852 KB Output is correct
15 Correct 250 ms 45788 KB Output is correct
16 Correct 252 ms 44860 KB Output is correct
17 Correct 271 ms 44916 KB Output is correct
18 Correct 230 ms 45776 KB Output is correct
19 Correct 255 ms 44912 KB Output is correct
20 Correct 209 ms 55036 KB Output is correct
21 Correct 21 ms 7880 KB Output is correct
22 Correct 214 ms 74772 KB Output is correct
23 Correct 225 ms 76208 KB Output is correct
24 Correct 232 ms 81984 KB Output is correct
25 Correct 233 ms 86164 KB Output is correct
26 Correct 250 ms 94164 KB Output is correct
27 Correct 441 ms 95700 KB Output is correct
28 Correct 356 ms 99336 KB Output is correct
29 Correct 486 ms 93788 KB Output is correct
30 Correct 225 ms 55860 KB Output is correct
31 Correct 472 ms 98496 KB Output is correct
32 Correct 126 ms 15716 KB Output is correct
33 Incorrect 143 ms 17268 KB Output isn't correct
34 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -