Submission #1076030

#TimeUsernameProblemLanguageResultExecution timeMemory
1076030aminAncient Books (IOI17_books)C++14
12 / 100
1 ms440 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; #define ll long long long long minimum_walk(vector<int> p, int s) { ll ans=0; ll n=p.size(); int o[n+1]; for(int i=0;i<=n;i++) { o[i]=0; } int pre=0; ll mi=1000000; ll ma=0; vector<pair<int,int> >r; for(ll i=0;i<n;i++) { if(p[i]!=i&&o[i]==0) { ll t=i; mi=min(mi,i); ma=i; ll x=p[i]; o[i]=1; while(x!=i) { t=max(t,x); o[x]=1; x=p[x]; } r.push_back({i,t}); } ans+=abs(p[i]-i); } sort(r.begin(),r.end()); if(r.size()>0) { for(int i=0;i<r.size()-1;i++) { if(r[i].second>r[i+1].first) { r[i+1].first=r[i].first; r[i+1].second=max(r[i].second,r[i+1].second); } } int o=r.size(); ma=r[o-1].first; } if(mi==1000000) mi=0; return ans+ma*2; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:44:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |    for(int i=0;i<r.size()-1;i++)
      |                ~^~~~~~~~~~~
books.cpp:55:1: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   55 | if(mi==1000000)
      | ^~
books.cpp:57:5: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   57 |     return ans+ma*2;
      |     ^~~~~~
books.cpp:14:9: warning: unused variable 'pre' [-Wunused-variable]
   14 |     int pre=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...