Submission #40165

#TimeUsernameProblemLanguageResultExecution timeMemory
40165alenam0161Ancient Books (IOI17_books)C++14
12 / 100
0 ms3976 KiB
#include "books.h" #include <iostream> #include <algorithm> using namespace std; const int N = 1e6 + 7; bool used[N]; vector<int> cycl,a; long long ans; void dfs(int v) { used[v] = true; cycl.push_back(v); ans += abs(a[v] - v); if (used[a[v]])return; dfs(a[v]); } void print(vector<int> v) { for (int to : v) { cout << to << " :"; } cout << endl; } bool us[N]; long long minimum_walk(std::vector<int> p, int s) { a = p; int n = p.size(); vector<pair<long long,int>> ms; vector<pair<int,int>> art; int lst = n - 1; while (lst >= 0 && p[lst] == lst)lst--; for (int i = 0; i < n; ++i) { if (used[i])continue; ans = 0; cycl.clear(); dfs(i); if (ans > 0) { ms.push_back({ ans,i }); sort(cycl.begin(), cycl.end()); art.push_back({ cycl[0],cycl.back() }); } } while (ms.size() > 0 && ms.back().first == 0)ms.pop_back(); if (ms.size() == 0)return 0ll; long long an = 0; for (int i = 0; i < ms.size(); ++i) { an += ms[i].first;// cout << ms[i].first << " " << ms[i].second << endl; } an += ms.back().second * 2ll; for (int i = 0; i+1 < art.size(); ++i) { int q = 0; an -= (art[i + 1].first - art[i].first) * 2; } return an; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:44:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < ms.size(); ++i) {
                    ^
books.cpp:48:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i+1 < art.size(); ++i) {
                      ^
books.cpp:49:7: warning: unused variable 'q' [-Wunused-variable]
   int q = 0;
       ^
#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...