제출 #381070

#제출 시각아이디문제언어결과실행 시간메모리
381070aryan12Xylophone (JOI18_xylophone)C++17
100 / 100
141 ms620 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

static int A[5000];

void solve(int n) {
	int diff[n + 1];
	int signs[n + 1];
	for(int i = 0; i <= n; i++) {
		signs[i] = 0;
	}
	for(int i = 1; i < n; i++) {
		diff[i] = query(i, i + 1);
	}
	signs[1] = diff[1];
	for(int i = 1; i < n - 1; i++) {
		int x = query(i, i + 2);
		if(x == diff[i] + diff[i + 1]) {
			signs[i + 1] = (signs[i] < 0) ? -diff[i + 1] : diff[i + 1];
		}
		else {
			signs[i + 1] = (signs[i] < 1) ? diff[i + 1] : -diff[i + 1];
		}
	}
	int minTillNow = 0, maxTillNow = 0;
	int cur = 0, pos = 0;
	for(int i = 1; i < n; i++) {
		cur += signs[i];
		minTillNow = min(minTillNow, cur);
		maxTillNow = max(maxTillNow, cur);
		if(maxTillNow - minTillNow == n - 1) {
			pos = i + 1;
			if(signs[i] < 0) {
				for(int j = 1; j < n; j++) {
					signs[j] = -signs[j];
				}
			}
			break;
		}
	}
	int ans[n + 1];
	ans[pos] = n;
	for(int i = pos; i < n; i++) {
		ans[i + 1] = ans[i] + signs[i];
	}
	for(int i = pos - 1; i > 0; i--) {
		ans[i] = ans[i + 1] + -signs[i];
	}
	for(int i = 1; i <= n; i++) {
		answer(i, ans[i]);
	}
}

컴파일 시 표준 에러 (stderr) 메시지

xylophone.cpp:5:12: warning: 'A' defined but not used [-Wunused-variable]
    5 | static int A[5000];
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...