답안 #73102

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73102 2018-08-27T16:13:04 Z aleksam 고대 책들 (IOI17_books) C++14
0 / 100
3 ms 484 KB
#include "books.h"

#include <bits/stdc++.h>
#define MAX_N 1000000
using namespace std;

struct cikl{
	int l, r;//Najlevlji i najdesnji
	long long sum;//suma p_i-i na ciklusu.
};
vector<cikl> C;
int numcyc=0, numcom=0;//broj ciklova
int N;
long long ans=0;
bool mark[MAX_N];

long long minimum_walk(vector<int> p, int s){
	//Ako je s=0 i n<1000
	N=p.size();
	while(N && p[N-1]==N-1){
		N--;//Ovaj deo mi ionako ne treba
	}
	if(!N)return 0;
	for(int i=0; i<N; ++i){
		if(!mark[i]){
			numcyc++;
			cikl A;
			A.l=A.r=i;
			mark[i]=1;
			int cur=i;
			do{
				cur=p[cur];
				if(cur>A.r)A.r=cur;
				if(cur<A.l)A.l=cur;
				A.sum+=abs(p[cur]-cur);
				mark[cur]=1;
			}while(i!=cur);
			C.push_back(A);
			//Ovako formiran niz ciklova je sortiran prema levom kraju--koji je uvek i
		}
	}
	int r=0;//Desna granica dosadasnjih ciklova;
	for(int i=0; i<numcyc; ++i){
		ans+=C[i].sum;
		if(C[i].l<=r){
			//Mogu da ga uhvatim, i dalje sam u istoj komponenti
		}
		else{
			numcom++;
		}
		if(C[i].r>r)
			r=C[i].r;
	}
	ans+=2*numcom;
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB 3rd lines differ - on the 1st token, expected: '6', found: '37671334'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB 3rd lines differ - on the 1st token, expected: '6', found: '37671334'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB 3rd lines differ - on the 1st token, expected: '6', found: '37671334'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 484 KB 3rd lines differ - on the 1st token, expected: '3304', found: '7239848064'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 248 KB 3rd lines differ - on the 1st token, expected: '6', found: '37671334'
2 Halted 0 ms 0 KB -