Submission #502272

#TimeUsernameProblemLanguageResultExecution timeMemory
502272vrohakXylophone (JOI18_xylophone)C++14
100 / 100
116 ms448 KiB
#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
void solve(int N) {
	int A[N];
	A[0] = 0;
	int D[N - 1];
	int T[N - 2];
	for(int i = 1; i < N; i++) {
		D[i - 1] = query(i, i + 1);
	}
	for(int i = 2; i < N; i++) {
		T[i - 2] = query(i - 1, i + 1);
	}
	A[1] = D[0];
	bool up = true;
	for(int i = 2; i < N; i++) {
		if(D[i - 2] + D[i - 1] != T[i - 2]) {
			up = !up;
		}
		A[i] = A[i - 1] + D[i - 1] * ((int)up * 2 - 1);
	}
    int rj1[N+1], rj2[N+1];
	int mx = 0, mn = 0x3f3f3f3f;
	int idx1 = 0, idx2 = 0;
	for(int i = 0; i < N; i++) {
		mn = min(mn, A[i]);
	}
  	mn = (-1)*mn+1;
  	for(int i=0;i<N;i++){
      rj1[i] = A[i]+mn;
      rj2[i] = -A[i];
    }
  	mn=0x3f3f3f3f;
    for(int i = 0; i < N; i++) {
		mn = min(mn, rj2[i]);
	}
  	mn = (-1)*mn+1;
  	for(int i=0;i<N;i++) rj2[i]+=mn;
  	for(int i=0;i<N;i++){
      if(rj1[i] == 1) idx1 = i;
      if(rj1[i] == N) idx2 = i;
    }
	if(idx1 < idx2) {
		for(int i = 0; i < N; i++) {
			answer(i + 1, rj1[i]);
		}
	} else {
		for(int i = 0; i < N; i++) {
			answer(i + 1, rj2[i]);
		}
	}
	
	return;
}

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:24:6: warning: unused variable 'mx' [-Wunused-variable]
   24 |  int mx = 0, mn = 0x3f3f3f3f;
      |      ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...