Submission #145403

#TimeUsernameProblemLanguageResultExecution timeMemory
145403mohammedehab2002고대 책들 (IOI17_books)C++11
12 / 100
3 ms376 KiB
#include "books.h" #include <bits/stdc++.h> using namespace std; vector<int> p; vector<pair<int,int> > c,d; bool vis[1000005]; void dfs(int i) { vis[i]=1; auto &x=c[c.size()-1]; x.first=min(x.first,i); x.second=max(x.second,i); if (!vis[p[i]]) dfs(p[i]); } long long minimum_walk(vector<int> pp,int s) { p=pp; while (!p.empty() && p.back()+1==p.size()) p.pop_back(); int n=p.size(); if (!n) return 0; long long ans=0; for (int i=0;i<n;i++) { ans+=abs(p[i]-i); if (!vis[i]) { c.push_back({i,i}); dfs(i); } } sort(c.begin(),c.end()); for (auto x:c) { if (d.empty() || x.first>d.back().second) d.push_back(x); else d[d.size()-1].second=x.second; } return ans+2*((int)d.size()-1); }

Compilation message (stderr)

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:19:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  while (!p.empty() && p.back()+1==p.size())
                       ~~~~~~~~~~^~~~~~~~~~
#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...