Submission #1339171

#TimeUsernameProblemLanguageResultExecution timeMemory
1339171settopAncient Books (IOI17_books)C++20
12 / 100
2 ms344 KiB
#include "books.h"
#include<bits/stdc++.h>

using namespace std;

#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
typedef tuple<int,vector<int>,int> trio;

long long minimum_walk(std::vector<int> p, int s){
	int n=sz(p),lp=0;
	fall(i,0,n-1) if(i!=p[i]) lp=i;

	vector<int> cur(n); iota(all(cur),0);

	int ans=0;
	fall(i,0,lp-1){
		ans++;
        bool foi=1;
		fall(j,0,n-1){
			if(cur[j]==i && p[j]>i){
				cur[j]++;
                if(!foi) ans+=2;
                foi=0;
			}
		}
        fall(j,0,n-1){
            if(cur[j]==i && p[j]<i && !foi) cur[j]--;
        }
	}
	rfall(i,lp,1){
		ans++;
        bool foi=1;
		fall(j,0,n-1){
			if(cur[j]==i && p[j]<i){
				cur[j]--;
				if(!foi) ans+=2;
                foi=0;
			}
		}
	}
	return ans;
}
#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...