Submission #581774

#TimeUsernameProblemLanguageResultExecution timeMemory
581774Koosha_mvAncient Books (IOI17_books)C++14
0 / 100
1 ms340 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; #define dbgv(v) cout<<#v<<" = "; f(i,0,v.size()) cout<<v[i]<<" "; cout<<endl #define dbga(a,x,y) cout<<#a<<" = "; f(i,x,y) cout<<a[i]<<" "; cout<<endl #define erorp(x) cout<<#x<<"={"<<x.F<<" , "<<x.S<<"}"<<endl #define eror(x) cout<<#x<<'='<<(x)<<endl #define f_(i,a,b) for(int i=a;i>=b;i--) #define f(i,a,b) for(int i=a;i<b;i++) #define nb(x) __builtin_popcount(x) #define all(v) v.begin(),v.end() #define bit(n,k) (((n)>>(k))&1) #define Add(x,y) x=(x+y)%mod #define maxm(a,b) a=max(a,b) #define minm(a,b) a=min(a,b) #define lst(x) x[x.size()-1] #define sz(x) int(x.size()) #define mp make_pair #define ll long long #define pb push_back #define S second #define F first const int N=1e6+99; const ll inf=1e15; int n,p[N],vis[N]; ll Max[N]; ll minimum_walk(vector<int> p, int s) { vector<pair<ll,ll>> vec; n=p.size(); ll mx=0,sum=0,ans=inf; f(i,0,n){ sum+=abs(i-p[i]); if(vis[i]) continue ; if(p[i]!=i) mx=i; int u=i; ll l=-inf,r=inf; maxm(mx,1ll*i); do{ vis[u]=1; if(u<=s) maxm(l,1ll*u); if(s<=u) minm(r,1ll*u); u=p[u]; } while(!vis[u]); vec.pb({l,r}); } return 2ll*mx+sum; sort(all(vec)); Max[0]=vec[0].S; f(i,1,vec.size()) Max[i]=max(Max[i-1],vec[i].S); minm(ans,2ll*(s-vec[0].F)); minm(ans,2ll*(Max[vec.size()-1]-s)); f_(i,vec.size()-1,1){ minm(ans,2ll*(s-vec[i].F)+2ll*(Max[i-1]-s)); } return ans+sum; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:9:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 | #define f(i,a,b) for(int i=a;i<b;i++)
......
   52 |  f(i,1,vec.size()) Max[i]=max(Max[i-1],vec[i].S);
      |    ~~~~~~~~~~~~~~              
books.cpp:52:2: note: in expansion of macro 'f'
   52 |  f(i,1,vec.size()) Max[i]=max(Max[i-1],vec[i].S);
      |  ^
#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...