Submission #1034933

#TimeUsernameProblemLanguageResultExecution timeMemory
1034933vjudge1Ancient Books (IOI17_books)C++17
0 / 100
1 ms600 KiB
#include "books.h" #include<bits/stdc++.h> using namespace std; int par[100100]; int abp(int n){ return par[n]?par[n]=abp(par[n]):n; } int merge(int a,int b){ a=abp(a+1);b=abp(b+1); if(a-b)par[a]=b; return a!=b; } long long minimum_walk(std::vector<int> p, int s) { long long ans=0; int n=p.size(),K=0; map<int,int>mp; for(int i=0;i<n;i++)if(i-p[i])mp[i], mp[p[i]], ans+=abs(i-p[i]),merge(i,p[i]); vector<tuple<int,int,int>>v; mp[s]; for(auto [i,j]:mp){ auto it=mp.upper_bound(i); if(it!=mp.end()) v.push_back({it->first-i,i,it->first}); } sort(v.begin(),v.end()); for(auto [w,x,y]:v) ans+=w*2*merge(x,y); return ans; }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:15:20: warning: unused variable 'K' [-Wunused-variable]
   15 |     int n=p.size(),K=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...