제출 #248868

#제출 시각아이디문제언어결과실행 시간메모리
248868kostia244고대 책들 (IOI17_books)C++17
12 / 100
2116 ms574984 KiB
#include "books.h"
#include<bits/stdc++.h>
using namespace std;
set<tuple<vector<int>, int, int, int>> dp;
int ans = 1<<30, os;
void solve(vector<int> p, int s, int hand, int cur) {
	if(cur > 30) return;
	if(!dp.insert({p, s, hand, cur}).second) return;
	int ok = 1;
	for(int i = 0; i < p.size(); i++) ok &= p[i] == i;
	if(ok&&s==os) ans = min(ans, cur);
	if(s+1 < p.size()) solve(p, s+1, hand, cur+1);
	if(s) solve(p, s-1, hand, cur+1);
	swap(p[s], hand);
	solve(p, s, hand, cur);
}
long long minimum_walk(std::vector<int> p, int s) {
	os = s;
	solve(p, s, -1, 0);
	return ans;
}

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

books.cpp: In function 'void solve(std::vector<int>, int, int, int)':
books.cpp:10:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < p.size(); i++) ok &= p[i] == i;
                 ~~^~~~~~~~~~
books.cpp:12:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(s+1 < p.size()) solve(p, s+1, hand, cur+1);
     ~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...