Submission #135205

#TimeUsernameProblemLanguageResultExecution timeMemory
135205anaykAncient Books (IOI17_books)C++14
50 / 100
162 ms14968 KiB
#include <iostream> #include "books.h" int min, max; int l, r; int n, low; void add(int val) { min = std::min(min, val); max = std::max(max, val); } long long minimum_walk(std::vector<int> p, int s) { n = p.size(); low = 0; long long answer = 0; for(int i = 0; i < p.size(); i++) answer += (long long) abs(i-p[i]); while(p[n-1] == n-1 && n-1 > s) n--; while(p[low] == low && low < s) low++; min = max = l = r = s; add(p[s]); while(min > low || max < n-1) { if(l > min) { l--; add(p[l]); } else if(r < max) { r++; add(p[r]); } else { answer += 2; if(max < n-1) max++; else min--; } } return answer; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:21:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < p.size(); i++)
                 ~~^~~~~~~~~~
#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...