제출 #248863

#제출 시각아이디문제언어결과실행 시간메모리
248863kostia244Ancient Books (IOI17_books)C++17
0 / 100
2085 ms21688 KiB
#include "books.h"
#include<bits/stdc++.h>
using namespace std;
set<tuple<vector<int>, int, int>> dp;
int ans = 1<<30, os;
void solve(vector<int> p, int s, int cur) {
	if(cur > 30) return;
	if(!dp.insert({p, s, 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);
	for(int j = 0; j < p.size(); j++) if(j != s) {
		solve(p, j, cur+abs(s-j));
		swap(p[j], p[s]);
		solve(p, j, cur+abs(s-j));
		swap(p[j], p[s]);
	}
}
long long minimum_walk(std::vector<int> p, int s) {
	os = s;
	solve(p, s, 0);
	return ans;
}

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

books.cpp: In function 'void solve(std::vector<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:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0; j < p.size(); j++) if(j != s) {
                 ~~^~~~~~~~~~
#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...