Submission #1045338

#TimeUsernameProblemLanguageResultExecution timeMemory
1045338beaconmcAncient Books (IOI17_books)C++14
50 / 100
152 ms43444 KiB
#include "books.h" #include <bits/stdc++.h> typedef long long ll; #define FOR(i,x,y) for(ll i=x; i<y; i++) #define FORNEG(i,x,y) for(ll i=x; i>y; i--) using namespace std; long long minimum_walk(vector<int> p, int s) { vector<int> q; for (auto&i : p)q.push_back(i); sort(q.begin(), q.end()); if (p==q) return 0; vector<bool> visited; vector<ll> maxis; for (auto&i : p) visited.push_back(0), maxis.push_back(-1); FOR(i,0,p.size()){ vector<ll> stuff; ll temp = i; ll maxi = i; if (visited[temp]) continue; visited[temp] = 1; temp = p[temp]; stuff.push_back(temp); while (temp != i){ maxi = max(maxi, temp); visited[temp] = 1; temp = p[temp]; visited[temp] = 1; stuff.push_back(temp); } for (auto&k : stuff){ maxis[k] = maxi; } } ll cur = 0; ll ans = 0; FOR(i,0,p.size()){ ans += abs(p[i]-i); } ll hi = p.size()-1; while (p[hi]==hi) hi--; while (cur < p.size()-1){ if (cur >= hi) break; if (cur == maxis[cur]){ ans+=2, cur++; } else{ FOR(i,cur,maxis[cur]+1){ cur = max(cur,maxis[i]); } } } return ans; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:21:12: warning: unused variable 'i' [-Wunused-variable]
   21 |  for (auto&i : p) visited.push_back(0), maxis.push_back(-1);
      |            ^
books.cpp:7:33: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 | #define FOR(i,x,y) for(ll i=x; i<y; i++)
......
   23 |  FOR(i,0,p.size()){
      |      ~~~~~~~~~~~~                
books.cpp:23:2: note: in expansion of macro 'FOR'
   23 |  FOR(i,0,p.size()){
      |  ^~~
books.cpp:7:33: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 | #define FOR(i,x,y) for(ll i=x; i<y; i++)
......
   46 |  FOR(i,0,p.size()){
      |      ~~~~~~~~~~~~                
books.cpp:46:2: note: in expansion of macro 'FOR'
   46 |  FOR(i,0,p.size()){
      |  ^~~
books.cpp:55:13: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |  while (cur < p.size()-1){
      |         ~~~~^~~~~~~~~~~~
#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...