Submission #4419262


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

using VS = vector<string>;    using LL = long long;
using VI = vector<int>;       using VVI = vector<VI>;
using PII = pair<int, int>;   using PLL = pair<LL, LL>;
using VL = vector<LL>;        using VVL = vector<VL>;

#define ALL(a)  begin((a)),end((a))
#define RALL(a) (a).rbegin(), (a).rend()
#define SZ(a) int((a).size())
#define SORT(c) sort(ALL((c)))
#define RSORT(c) sort(RALL((c)))
#define UNIQ(c) (c).erase(unique(ALL((c))), end((c)))
#define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++)
#define FORR(i, s, e) for (int(i) = (s); (i) > (e); (i)--)
//#pragma GCC optimize ("-O3") 
#ifdef YANG33
#include "mydebug.hpp"
#else
#define DD(x) 
#endif
const int INF = 1e9;                          const LL LINF = 1e16;
const LL MOD = 1000000007;                    const double PI = acos(-1.0);
int DX[8] = { 0, 0, 1, -1, 1, 1, -1, -1 };    int DY[8] = { 1, -1, 0, 0, 1, -1, 1, -1 };

/* -----  __MAKE_TIME__  Problem: __PROBLEM__ / Link: __CONTEST_URL__  ----- */
/* ------問題------



-----問題ここまで----- */
/* -----解説等-----



----解説ここまで---- */
struct Cumusum {
	vector<LL>csum;
	Cumusum(vector<LL>&a) {
		csum.assign((int)a.size()+1, 0);
		for (int i = 0; i < (int)a.size(); i++) {
			csum[i + 1] = csum[i] + a[i];
		}
	}
	LL query(int l, int r) {
		return csum[r] - csum[l];
	}
};

int main() {
	cin.tie(0);
	ios_base::sync_with_stdio(false);

	LL N;
	cin >> N;
	VL a(N);
	FOR(i, 0, N) {
		cin >> a[i];
	}
	Cumusum A(a);
	// [L,R)を絶対値の差が小さくなるように2つに分割する
	auto f = [](Cumusum&A, int Lidx, int Ridx) {
		LL L = Lidx; LL R = Ridx;
		FOR(i, 0, 60) {
			int m1 = (2 * L + R) / 3;
			int m2 = (L + 2 * R) / 3;
			LL dif1 = abs(A.query(Lidx, m1) - A.query(m1, Ridx));
			LL dif2 = abs(A.query(Lidx, m2) - A.query(m2, Ridx));
			if (dif1 < dif2) {
				R = m2;
			}
			else {
				L = m1;
			}
		}
		LL Diff = LINF; int midx = 0;
		FOR(k, 1, R - L) {
			int m = L + k;
			LL diff = abs(A.query(Lidx, m) - A.query(m, Ridx));
			if (Diff > diff) {
				Diff = diff;
				midx = m;
			}
		}
		return PLL(A.query(Lidx, midx), A.query(midx, Ridx));
	};
	LL ans = LINF;
	FOR(i, 2, N - 1) {
		PLL ab = f(A, 0, i);//[0,i)
		PLL cd = f(A, i, N);
		LL Mx = max({ ab.first,ab.second,cd.first,cd.second });
		LL Mn = min({ ab.first,ab.second,cd.first,cd.second });
		ans = min(ans, Mx - Mn);
	}


	cout << ans << "\n";

	return 0;
}

Submission Info

Submission Time
Task D - Equal Cut
User Yang33
Language C++14 (GCC 5.4.1)
Score 600
Code Size 2536 Byte
Status AC
Exec Time 218 ms
Memory 3328 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 43
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KiB
sample_02.txt AC 1 ms 256 KiB
sample_03.txt AC 1 ms 256 KiB
subtask_1_01.txt AC 1 ms 256 KiB
subtask_1_02.txt AC 200 ms 3072 KiB
subtask_1_03.txt AC 94 ms 1536 KiB
subtask_1_04.txt AC 139 ms 2176 KiB
subtask_1_05.txt AC 2 ms 256 KiB
subtask_1_06.txt AC 28 ms 640 KiB
subtask_1_07.txt AC 125 ms 2048 KiB
subtask_1_08.txt AC 80 ms 1408 KiB
subtask_1_09.txt AC 122 ms 2048 KiB
subtask_1_10.txt AC 169 ms 2688 KiB
subtask_1_11.txt AC 193 ms 3072 KiB
subtask_1_12.txt AC 97 ms 1664 KiB
subtask_1_13.txt AC 131 ms 2176 KiB
subtask_1_14.txt AC 44 ms 896 KiB
subtask_1_15.txt AC 27 ms 640 KiB
subtask_1_16.txt AC 113 ms 1920 KiB
subtask_1_17.txt AC 97 ms 1664 KiB
subtask_1_18.txt AC 7 ms 384 KiB
subtask_1_19.txt AC 198 ms 3200 KiB
subtask_1_20.txt AC 204 ms 3200 KiB
subtask_1_21.txt AC 106 ms 1792 KiB
subtask_1_22.txt AC 69 ms 1280 KiB
subtask_1_23.txt AC 176 ms 2816 KiB
subtask_1_24.txt AC 217 ms 3328 KiB
subtask_1_25.txt AC 217 ms 3328 KiB
subtask_1_26.txt AC 217 ms 3328 KiB
subtask_1_27.txt AC 218 ms 3328 KiB
subtask_1_28.txt AC 218 ms 3328 KiB
subtask_1_29.txt AC 217 ms 3328 KiB
subtask_1_30.txt AC 217 ms 3328 KiB
subtask_1_31.txt AC 217 ms 3328 KiB
subtask_1_32.txt AC 217 ms 3328 KiB
subtask_1_33.txt AC 217 ms 3328 KiB
subtask_1_34.txt AC 214 ms 3328 KiB
subtask_1_35.txt AC 214 ms 3328 KiB
subtask_1_36.txt AC 214 ms 3328 KiB
subtask_1_37.txt AC 214 ms 3328 KiB