Submission #98932

#TimeUsernameProblemLanguageResultExecution timeMemory
98932square1001Ancient Books (IOI17_books)C++14
0 / 100
3 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]; } if(p[i] == i) continue; 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 * 2); if(i != cycles.size()) cur = max(cur, cycles[i].second); } return ans + off; }

Compilation message (stderr)

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