CSES - Esimerkki-implementaatio
struct Line {
	ll a, b;
	ll eval(ll x) const { return a*x + b; }
};
class LiChao {
	private:
		const static ll INF = 4e18;
		vector<Line> tree; // Tree of lines
		vector<ll> xs; // x-coordinate of point i
		int k = 1; // Log-depth of the tree

		int mapInd(int j) const {
			int z = __builtin_ctz(j);
			return ((1<<(k-z)) | (j>>z)) >> 1;
		}
		bool comp(const Line& a, int i, int j) const {
			return a.eval(xs[j]) < tree[i].eval(xs[j]);
		}
	public:
		LiChao(const vector<ll>& points) {
			while(points.size() >> k) ++k;
			tree.resize(1 << k, {0, INF});
			xs.resize(1 << k, points.back());
			for (int i = 0; i < points.size(); ++i) xs[mapInd(i+1)] = points[i];
		}
		void addLine(Line line) {
			for (int i = 1; i < tree.size();) {
				if (comp(line, i, i)) swap(line, tree[i]);
				if (line.a > tree[i].a) i = 2*i;
				else i = 2*i+1;
			}
		}
		ll minVal(int j) const {
			j = mapInd(j+1);
			ll res = INF;
			for (int i = j; i > 0; i /= 2) res = min(res, tree[i].eval(xs[j]));
			return res;
		}
};

Tässä mapInd-funktio kuvaa indeksit sijainteihin puussa. Jos puun koko on 7, ja arvot x ovat 1, 2, \dots, 7, puun indeksointi on seuraava

ja arvot x sen solmuissa ovat seuraavat

Toinen, segmenttipuutyylinen toteutus:

const int N = 1<<20;
const ll INF = 4e18;
struct Line {
	// Nämä voi usein tallentaa intteinä, mutta tällöin
	// "ääretön" suora pitää toteuttaa varovasti.
	ll k, c=INF;
	ll operator()(ll x) {
		return k*x + c;
	}
} lct[2*N];
Line lc_get(int p, int cn=1, int x=0, int y=N-1) {
	if (x == y) return lct[cn];
	int m = (x+y)/2;
	Line got;
	if (p <= m) got = lc_get(p, 2*cn, x, m);
	else got = lc_get(p, 2*cn+1, m+1, y);
	if (lct[cn](p) < got(p)) return lct[cn];
	else return got;
}
void lc_add(Line nw, int cn=1, int x=0, int y=N-1) {
	Line &old = lct[cn];
	int m = (x+y)/2;
	bool better_x = nw(x) < old(x);
	bool better_m = nw(m) < old(m);
	if (better_m) swap(old, nw);
	if (x != y) {
		if (better_x != better_m) {
			lc_add(nw, 2*cn, x, m);
		} else {
			lc_add(nw, 2*cn+1, m+1, y);
		}
	}
}