답안 #168101

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
168101 2019-12-11T11:31:31 Z dimash241 Candies (JOI18_candies) C++17
0 / 100
2 ms 376 KB
# include <bits/stdc++.h>

using namespace std;
#define _USE_MATH_DEFINES_
#define ll long long
#define ld long double
#define Accepted 0
#define pb push_back
#define mp make_pair
#define sz(x) (int)(x.size())
#define every(x) x.begin(),x.end()
#define F first
#define S second
#define lb lower_bound
#define ub upper_bound
#define For(i,x,y)  for (ll i = x; i <= y; i ++) 
#define FOr(i,x,y)  for (ll i = x; i >= y; i --)
#define SpeedForce ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0)
// ROAD to...                                                                                                                                                                                                                Red

inline void Input_Output () {
	//freopen(".in", "r", stdin);
   //freopen(".out", "w", stdout);
}

const double eps = 0.000001;
const ld pi = acos(-1);
const int maxn = 1e7 + 9;
const int mod = 1e9 + 7;
const ll MOD = 1e18 + 9;
const ll INF = 1e18 + 123;
const int inf = 2e9 + 11;
const int mxn = 1e6 + 9;
const int N = 6e5 + 123;                                          
const int M = 22;
const int pri = 997;
const int Magic = 2101;

const int dx[] = {-1, 0, 1, 0};
const int dy[] = {0, -1, 0, 1};
 
int n, m, k;
ll ans[N];
ll f[N][2];
int a[N];


int main () {
   	SpeedForce;
	cin >> n;
	ll a1 = 0, a2 = 0;
	for (int i = 1; i <= n; i ++) {
		cin >> a[i];
		if (i % 2)
			a1 += a[i];
		else
			a2 += a[i];
		
	}

	int l1 = 1, r1 = n; 
	int l2 = 2, r2 = n;
	if (r1 % 2) {
		r2--;
	} else r1 --;

	for (int i = (n + 1); i >= 1; i --) {
		if ((r1 - l1 + 2) / 2 > i) {
			if (a[l1] < a[r1]) {
				a1 -= a[l1];
				l1 += 2; 
			} else {
				a1 -= a[r1];
				r1 -= 2;
			}
		}

		if ((r2 - l2 + 2) / 2 > i) {
			if (a[l2] < a[r2]) {
				a2 -= a[l2];
				l2 += 2; 
			} else {
				a2 -= a[r2];
				r2 -= 2;
			}
		}
		if ((r1 - l1 + 2) / 2 == i) {
			ans[i] = max(ans[i], a1);
		}
		if ((r2 - l2 + 2) / 2 == i) {
			ans[i] = max(ans[i], a2);
		}
	}

	for (int i = 1; i <= (n + 1) / 2; i ++)
		cout << ans[i] << '\n';

	return Accepted;
}

// B...a
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -