Submission #120025

#TimeUsernameProblemLanguageResultExecution timeMemory
120025E869120Hacker (BOI15_hac)C++14
100 / 100
233 ms22412 KiB
#include <iostream>
#include <algorithm>
using namespace std;
#pragma warning (disable: 4996)

long long N, A[1 << 20], C[1 << 20],  T[1 << 20];

bool solve(long long pos) {
	for (int i = 0; i <= N * 2; i++) T[i] = 0;
	for (int i = 0; i < N; i++) {
		long long E = C[i + (N + 1) / 2] - C[i];
		if (E >= pos) { T[i + 1] = 1; T[i + 1 + N] = 1;}
	}
	for (int i = 1; i <= 2 * N; i++) T[i] += T[i - 1];

	for (int i = 0; i < N; i++) {
		if (T[i + (N + 1) / 2] - T[i] == (N + 1) / 2) return true;
	}
	return false;
}

int main() {
	scanf("%lld", &N);
	for (int i = 1; i <= N; i++) { scanf("%lld", &A[i]); C[i] = A[i]; C[i + N] = C[i]; }
	for (int i = 1; i <= N * 2; i++) C[i] += C[i - 1];

	long long cl = 0, cr = (1LL << 30), cm, maxn = -(1LL << 30);
	for (int i = 0; i < 33; i++) {
		cm = (cl + cr) / 2;
		bool I = solve(cm);
		if (I == true) { cl = cm; maxn = max(maxn, cm); }
		else { cr = cm; }
	}
	cout << maxn << endl;
	return 0;
}

Compilation message (stderr)

hac.cpp:4:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning (disable: 4996)
 
hac.cpp: In function 'int main()':
hac.cpp:23:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld", &N);
  ~~~~~^~~~~~~~~~~~
hac.cpp:24:38: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for (int i = 1; i <= N; i++) { scanf("%lld", &A[i]); C[i] = A[i]; C[i + N] = C[i]; }
                                 ~~~~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...