Submission #759416

# Submission time Handle Problem Language Result Execution time Memory
759416 2023-06-16T09:24:48 Z Nika533 Xylophone (JOI18_xylophone) C++17
Compilation error
0 ms 0 KB
#include "xylophone.h"
#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define f first
#define s second
#define MOD 1000000007
#define flush fflush(stdout)
#define all(x) (x).begin(),(x).end()
using namespace std;
int n,m,T,k;
void solve (int n) {
	int ind1;
	int l=1;
	int r=n;
	while (l<=r) {
		int mid=(l+r)/2;
		
		int x=query(mid,n);
		
		if (x==n-1) {
			ind1=mid;
			l=mid+1;
		}
		else {
			r=mid-1;
		}
	}
	int indn;
	l=ind1+1;
	r=n;
	while (l<=r) {
		int mid=(l+r)/2;
		
		int x=query(ind1,mid); 
		
		if (x==n-1) {
			indn=mid;
			r=mid-1;
		}
		else {
			l=mid+1;
		}
	}
	
	vector<bool> fix(n+1,0);
	vector<int> arr(n+1,0);
	
	answer(ind1,1);
	answer(indn,n);
	
	fix[1]=1;
	arr[ind1]=1;
	fix[n]=1;
	arr[indn]=n;
	
	for (int i=ind1-1; i>=1; i--) {
		
		int x=query(i,i+1);
		
		int val1=arr[i+1]-x;
		int val2=arr[i+1]+x;
		
		if (val1<1 || fix[val1]==1) {
			arr[i]=val2;
			fix[val2]=1;
			
			answer(i,val2);
		}
		else if (val2>n || fix[val2]==1) {
			arr[i]=val1;
			fix[val1]=1;
			
			answer(i,val1);
		}
		else {
			
			int y=query(i,i+2);
			
			int val;
			
			int mx=max(val1,max(arr[i+1],arr[i+2]));
			int mn=min(val1,min(arr[i+1],arr[i+2]));
			
			if (mx-mn==y) {
				val=val1;
			}
			else {
				val=val2;
			}
			
			arr[i]=val;
			fix[val]=1;
			
			answer(i,val);
		}
	}
	for (int i=indn-1; i>ind1; i--) {
		
		int x=query(i,i+1);
		
		int val1=arr[i+1]-x;
		int val2=arr[i+1]+x;
		
		if (val1<1 || fix[val1]==1) {
			arr[i]=val2;
			fix[val2]=1;
			
			answer(i,val2);
		}
		else if (val2>n || fix[val2]==1) {
			arr[i]=val1;
			fix[val1]=1;
			
			answer(i,val1);
		}
		else {
			
			int y=query(i,i+2);
			
			int val;
			
			int mx=max(val1,max(arr[i+1],arr[i+2]));
			int mn=min(val1,min(arr[i+1],arr[i+2]));
			
			if (mx-mn==y) {
				val=val1;
			}
			else {
				val=val2;
			}
			
			arr[i]=val;
			fix[val]=1;
			
			answer(i,val);
		}
	}
	for (int i=indn+1; i<=n; i++) {
		int x=query(i-1,i);
		
		int val1=arr[i-1]-x;
		int val2=arr[i-1]+x;
		
		if (val1<1 || fix[val1]==1) {
			arr[i]=val2;
			fix[val2]=1;
			
			answer(i,val2);
		}
		else if (val2>n || fix[val2]==1) {
			arr[i]=val1;
			fix[val1]=1;
			
			answer(i,val1);
		}
		else {
			int y=query(i-2,i);
			
			int val;
			
			int mx=max(val1,max(arr[i-1],arr[i-2]));
			int mn=min(val1,min(arr[i-1],arr[i-2]));
			
			if (mx-mn==y) {
				val=val1;
			}
			else {
				val=val2;
			}
			
			arr[i]=val;
			fix[val]=1;
			
			answer(i,val);
		}
	}
}

Compilation message

xylophone.cpp: In function 'void solve(long long int)':
xylophone.cpp:30:3: warning: 'ind1' may be used uninitialized in this function [-Wmaybe-uninitialized]
   30 |  l=ind1+1;
      |  ~^~~~~~~
xylophone.cpp:139:11: warning: 'indn' may be used uninitialized in this function [-Wmaybe-uninitialized]
  139 |  for (int i=indn+1; i<=n; i++) {
      |           ^
/usr/bin/ld: /tmp/ccL2qtON.o: in function `main':
grader.cpp:(.text.startup+0x30): undefined reference to `solve(int)'
collect2: error: ld returned 1 exit status