답안 #142892

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
142892 2019-08-12T03:08:16 Z babo 고대 책들 (IOI17_books) C++14
12 / 100
3 ms 404 KB
#include <bits/stdc++.h>
#define inf 1000000000000000000ll
#define all(x) (x).begin(),(x).end()
#define ab(x) ((x)>0?(x):-(x))
#define L long long

using namespace std;

L n;
L chk[1000010];

struct S{
	L s,e;
};

vector<S>v;
vector<L>w;

L minimum_walk(vector<int>p,int s){
	L i,ret=0,cntgroup=-1,startdist=inf;
	n=p.size();
	for(i=0;i<n;i++)
		if(p[i]!=i)
			w.push_back(i);

	vector<L>::iterator it=lower_bound(all(w),s+1);
	if(it!=w.end())
		startdist=min(startdist,*it-s);
	                    it=upper_bound(all(w),s);
	if(it!=w.end())
		startdist=min(startdist,(*prev(it))-s);
	if(startdist==inf) return 0;
	for(i=0;i<n;i++)
	{
		if(p[i]==i) p[i]=-1;
	}
	for(i=0;i<n;i++)
	{
		if(p[i]==-1) continue;
		if(!chk[i])
		{
			L s=i,e=i;
			L temp=p[i];
			ret+=ab(p[i]-i);
			chk[temp]=1;
			while(temp!=i)
			{
				e=max(e,temp);
				ret+=ab(p[temp]-temp);
				temp=p[temp];
				chk[temp]=1;
			}
			v.push_back((S){s,e});
		}
	}
	sort(all(v),[](S a,S b){
		return a.s<b.s;
	});
	L emax=-1;
	for(i=0;i<v.size();i++)
	{
		//printf("s e %lld %lld\n",v[i].s,v[i].e);
		if(v[i].s>emax) cntgroup++;
		emax=max(emax,v[i].e);
	}
	//printf("%lld %lld %lld\n",ret,cntgroup,startdist);
	return ret+cntgroup*2+startdist*2;
}

Compilation message

books.cpp: In function 'long long int minimum_walk(std::vector<int>, int)':
books.cpp:60:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<v.size();i++)
          ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 2 ms 256 KB Output is correct
13 Correct 2 ms 252 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 2 ms 376 KB Output is correct
16 Correct 2 ms 256 KB Output is correct
17 Correct 2 ms 256 KB Output is correct
18 Correct 2 ms 256 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 2 ms 256 KB Output is correct
13 Correct 2 ms 252 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 2 ms 376 KB Output is correct
16 Correct 2 ms 256 KB Output is correct
17 Correct 2 ms 256 KB Output is correct
18 Correct 2 ms 256 KB Output is correct
19 Correct 2 ms 376 KB Output is correct
20 Correct 3 ms 376 KB Output is correct
21 Correct 2 ms 404 KB Output is correct
22 Incorrect 2 ms 376 KB 3rd lines differ - on the 1st token, expected: '2082', found: '1128'
23 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 2 ms 256 KB Output is correct
13 Correct 2 ms 252 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 2 ms 376 KB Output is correct
16 Correct 2 ms 256 KB Output is correct
17 Correct 2 ms 256 KB Output is correct
18 Correct 2 ms 256 KB Output is correct
19 Correct 2 ms 376 KB Output is correct
20 Correct 3 ms 376 KB Output is correct
21 Correct 2 ms 404 KB Output is correct
22 Incorrect 2 ms 376 KB 3rd lines differ - on the 1st token, expected: '2082', found: '1128'
23 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB 3rd lines differ - on the 1st token, expected: '3304', found: '2744'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 2 ms 376 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 376 KB Output is correct
12 Correct 2 ms 256 KB Output is correct
13 Correct 2 ms 252 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 2 ms 376 KB Output is correct
16 Correct 2 ms 256 KB Output is correct
17 Correct 2 ms 256 KB Output is correct
18 Correct 2 ms 256 KB Output is correct
19 Correct 2 ms 376 KB Output is correct
20 Correct 3 ms 376 KB Output is correct
21 Correct 2 ms 404 KB Output is correct
22 Incorrect 2 ms 376 KB 3rd lines differ - on the 1st token, expected: '2082', found: '1128'
23 Halted 0 ms 0 KB -