답안 #44436

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
44436 2018-04-02T07:15:44 Z ssnsarang2023 Candies (JOI18_candies) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
typedef pair<ll, int> pli;
 
const int N = (int)2e5+5;
const ll oo = (ll)1e18+7ll;
int n, nxt[N], pre[N];
ll a[N];
priority_queue<pli> pq;
 
int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i) {
		scanf("%lld", &a[i]);
		nxt[i] = i + 1, pre[i] = i - 1;
		pq.push(pli(a[i], i));
	}
	ll ans = 0;
	for (int i = 1; i <= n + 1 >> 1); ++i) {
		for (; pq.top().first != a[pq.top().second]; pq.pop());
		int x = pq.top().second, l = pre[x], r = nxt[x];
		printf("%lld\n", ans += a[x]);
		pq.pop();
		pre[nxt[x] = nxt[r]] = x;
		nxt[pre[x] = pre[l]] = x;
		a[x] = l && r ? max(-oo, a[l] + a[r] - a[x]) : -oo;
		a[l] = a[r] = -oo;
		pq.push(pli(a[x], x));
	}
	return 0;
}

Compilation message

candies.cpp: In function 'int main()':
candies.cpp:21:25: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  for (int i = 1; i <= n + 1 >> 1); ++i) {
                       ~~^~~
candies.cpp:21:33: error: expected ';' before ')' token
  for (int i = 1; i <= n + 1 >> 1); ++i) {
                                 ^
candies.cpp:21:2: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
  for (int i = 1; i <= n + 1 >> 1); ++i) {
  ^~~
candies.cpp:21:36: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
  for (int i = 1; i <= n + 1 >> 1); ++i) {
                                    ^~
candies.cpp:21:38: error: 'i' was not declared in this scope
  for (int i = 1; i <= n + 1 >> 1); ++i) {
                                      ^
candies.cpp:20:5: warning: unused variable 'ans' [-Wunused-variable]
  ll ans = 0;
     ^~~
candies.cpp:14:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
candies.cpp:16:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &a[i]);
   ~~~~~^~~~~~~~~~~~~~~