답안 #302256

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
302256 2020-09-18T14:52:11 Z TMJN 고대 책들 (IOI17_books) C++17
0 / 100
2 ms 512 KB
#include "books.h"
#include <bits/stdc++.h>
using namespace std;

int p,h,POS[1000000],tree[1<<21];
long long d;
vector<int>P;

void movel(int x){
	for(int i=p;i>=x;i--){
		if(h>P[i]){
			swap(h,P[i]);
		}
	}
	d+=p-x;
	p=x;
}

void mover(int x){
	for(int i=p;i<=x;i++){
		if(h<P[i]){
			swap(h,P[i]);
		}
	}
	d+=x-p;
	p=x;
}

void update(int x){
	x+=1<<20;
	while(x){
		tree[x]++;
		x/=2;
	}
}

int calc(int l,int r){
	l+=1<<20;
	r+=1<<20;
	int a=0;
	while(l<r){
		if(l&1)a+=tree[l];
		if(~r&1)a+=tree[r];
		l=(l+1)/2;
		r=(r-1)/2;
	}
	if(l==r)a+=tree[l];
	return a;
}

long long minimum_walk(vector<int>ppp,int S){
	P=ppp;
	assert(S==0);
	int N=P.size();
	p=0;
	d=0;
	h=-1;
	for(int a=N-1;a>=0;a--){
		if(P[a]!=a){
			movel(a);
			for(int i=0;i<N;i++){
				POS[P[i]]=i;
			}
			for(int i=a;i<N;i++){
				update(POS[i]);
			}
			for(int i=a-1;i>0;i--){
				p--;
				d++;
				d+=max(1,i-POS[i]);
				update(POS[i]);
			}
		}
	}
	return d+p;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '6', found: '3'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '6', found: '3'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '6', found: '3'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 512 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '6', found: '3'
2 Halted 0 ms 0 KB -