답안 #996048

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
996048 2024-06-10T07:36:13 Z coldbr3w Xylophone (JOI18_xylophone) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
#define ll long long
#define int long long
ll d2[(ll)1e5 + 100], d3[(ll)1e5 + 100], a[(ll)1e5 + 100], pos[(ll)1e5 + 100];
bool check(ll x, ll n){
	a[2] = x;
	for(int i = 3; i <= n;i++){
		if(d3[i] == d2[i-1]){
			if(a[i-1] < a[i-2]){
				a[i] = a[i-1] + d2[i];
			}
			else a[i] = a[i-1] - d2[i];
		}
		else{
			if(a[i-2] < a[i-1]){
				if(d2[i-1] + d2[i] == d3[i]){
					a[i] = a[i-1] + d2[i];
				}
				else{
					a[i] = a[i-1] - d2[i];
				}
			}	
			else{
				if(d2[i] == d3[i]){
					a[i] = a[i-1] + d2[i];
				}
				else a[i] = a[i-2] - d3[i];
			}
		}
	}
	for(int i = 1; i <= n;i++) {
		if(a[i] < 0) return 0;
		pos[a[i]] = i;
	}
	ll ok = (pos[1] < pos[n]);
	for(int i = 1; i <= n;i++) ok &= (pos[i] > 0);
	if(ok){
		for(int i = 1; i <= n;i++) answer(i, a[i]);
		return 1;
	}
	else return 0;
}
void solve(int n){
	for(int i = 2; i <= n;i++) d2[i] = query(i - 1, i);
	for(int i = 3; i <= n;i++) d3[i] = query(i - 2, i);
	for(int val = 1; val <= n;val++){
		for(int i = 1; i <= n;i++) pos[i] = 0;
		a[1] = val;
		if(check(a[1] + d2[2], n)) return;
		if(check(a[1] - d2[2], n)) return;
	}
}

Compilation message

/usr/bin/ld: /tmp/ccy1qa9v.o: in function `main':
grader.cpp:(.text.startup+0x30): undefined reference to `solve(int)'
collect2: error: ld returned 1 exit status