제출 #98930

#제출 시각아이디문제언어결과실행 시간메모리
98930square1001고대 책들 (IOI17_books)C++14
0 / 100
2 ms384 KiB
#include "books.h"
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
const long long inf = 1LL << 61;
long long minimum_walk(std::vector<int> p, int s) {
	int n = p.size();
	vector<pair<long long, long long> > cycles;
	vector<bool> vis(n);
	long long off = 0;
	for(int i = 0; i < n; ++i) {
		if(vis[i]) continue;
		long long cl = -inf, cr = inf;
		int pos = i;
		while(!vis[pos]) {
			if(pos <= s) cl = max(cl, (long long)pos);
			if(pos >= s) cr = min(cr, (long long)pos);
			vis[pos] = true;
			off += abs(p[pos] - pos);
			pos = p[pos];
		}
		cycles.push_back(make_pair(cl - s, cr - s));
	}
	sort(cycles.begin(), cycles.end());
	/*
	for(pair<long long, long long> i : cycles) {
		cout << i.first << ' ' << i.second << endl;
	}
	* */
	long long ans = inf, cur = 0;
	for(int i = 0; i <= cycles.size(); ++i) {
		ans = min(ans, (i != cycles.size() ? -cycles[i].first : 0) * 2 + cur);
		ans = min(ans, (i != cycles.size() ? -cycles[i].first : 0) + cur * 2);
		if(i != cycles.size()) cur = max(cur, cycles[i].second);
	}
	return ans + off;
}

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

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:32:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i <= cycles.size(); ++i) {
                 ~~^~~~~~~~~~~~~~~~
books.cpp:33:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   ans = min(ans, (i != cycles.size() ? -cycles[i].first : 0) * 2 + cur);
                   ~~^~~~~~~~~~~~~~~~
books.cpp:34:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   ans = min(ans, (i != cycles.size() ? -cycles[i].first : 0) + cur * 2);
                   ~~^~~~~~~~~~~~~~~~
books.cpp:35:8: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(i != cycles.size()) cur = max(cur, cycles[i].second);
      ~~^~~~~~~~~~~~~~~~
#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...