NOIXICH - Nối Xích

Tác giả: happyboy99x

Ngôn ngữ: C++

#include<cstdio>
#include<algorithm>
using namespace std;

int n, a[555555];

int main() {
	while(scanf("%d", &n) == 1) {
		for(int i = 0; i < n; ++i) scanf("%d", a+i);
		sort(a, a+n);
		int lo = 0, hi = n-1, res = 0;
		while(lo != hi) {
			if(a[lo] + 1 <= hi - lo) {
				int l = a[lo]; res += a[lo];
				for(int i = hi-a[lo]; i <= hi; ++i) l += a[i];
				hi -= a[lo]; a[hi] = l; ++lo;
			} else {
				res += hi - lo;
				hi = lo;
			}
		}
		printf("%d\n", res);
	}
	return 0;
}

Download