Submission #127648

#TimeUsernameProblemLanguageResultExecution timeMemory
127648DanerZeinAncient Books (IOI17_books)C++14
0 / 100
3 ms376 KiB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;
long long minimum_walk(std::vector<int> p, int s) {
	int i=s,d=0,b=-1;
	vector<int>q,q1;
	q=p;
	sort(q.begin(),q.end());
	q1=q;
	reverse(q1.begin(),q1.end());
	if(q1==p){
        return p.size()*2;
	}else{
	vector<bool>vis(p.size()-1,false);
	while(true){

        if(i!=p[i]){

            d+=abs(i-p[i]);

            if(b==-1){
                b=p[i];
                p[i]=-1;
            }
            else{
                if(p[i]==-1){
                    p[i]=b;
                }
                else{
                int aux=b;
                b=p[i];
                p[i]=aux;
                }
            }
            i=b;
            //vis[i]=true;

        }
        else{
            i++;
        }/*for(int j=0;j<p.size();j++){
            cout<<p[j]<<" ";
        }
        cout<<"b: "<<b<<" i: "<<i<<endl;*/
        if(q==p){
            break;
        }

	}
	d+=i;
	return d-1;
	}
}
/*
int main() {
	int n, s;
	assert(2 == scanf("%d %d", &n, &s));

	vector<int> p((unsigned) n);
	for(int i = 0; i < n; i++)
		assert(1 == scanf("%d", &p[(unsigned) i]));

	long long res = minimum_walk(p, s);
	printf("%lld\n", res);

	return 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...