제출 #556846

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

#define PB push_back
#define F first
#define S second

int arr[5050];
map<pair<int,int>,int> mp;

void solve(int N)
{
	arr[1]=0;
	arr[2]=mp[{1,2}]=query(1,2);
	for(int i=3;i<=N;i++)
	{
		int a1=mp[{i-2,i-1}];
		int a2=mp[{i-1,i}]=query(i-1,i);
		int a3=mp[{i-2,i}]=query(i-2,i);

		if(a1+a2==a3)
		{
			if(arr[i-2]<arr[i-1])
				arr[i]=arr[i-1]+a2;
			else
				arr[i]=arr[i-1]-a2;
		}
		else if(a1==a3)
		{
			if(arr[i-2]<arr[i-1])
				arr[i]=arr[i-1]-a2;
			else
				arr[i]=arr[i-1]+a2;
		}
		else if(a2==a3)
		{
			if(arr[i-2]<arr[i-1])
				arr[i]=arr[i-1]-a2;
			else
				arr[i]=arr[i-1]+a2;
		}
	}

	int mn=1e9;
	for(int i=1;i<=N;i++)
		mn=min(mn,arr[i]);

	for(int i=1;i<=N;i++)
		arr[i] = arr[i] - mn + 1;

	int idx_mn,idx_mx;
	for(int i=1;i<=N;i++)
	{
		if(arr[i]==1)idx_mn=i;
		if(arr[i]==N)idx_mx=i;
	}
	if(idx_mx<idx_mn)
		for(int i=1;i<=N;i++)
			arr[i] = N - arr[i] + 1;

	for(int i=1;i<=N;i++)
		answer(i,arr[i]);

	return ;
}

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

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:58:2: warning: 'idx_mx' may be used uninitialized in this function [-Wmaybe-uninitialized]
   58 |  if(idx_mx<idx_mn)
      |  ^~
xylophone.cpp:58:2: warning: 'idx_mn' may be used uninitialized in this function [-Wmaybe-uninitialized]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...