Submission #295652

# Submission time Handle Problem Language Result Execution time Memory
295652 2020-09-09T19:33:19 Z williamMBDK Ancient Books (IOI17_books) C++14
12 / 100
1 ms 384 KB
#include<bits/stdc++.h>
using namespace std;
#include "books.h"
#define int long long
long long minimum_walk(std::vector<signed> p, signed s) {
	int N = p.size();
	vector<int> nodes (N, -1);
	int c = 0;
	int sum = 0;
	for(int i = 0; i < N; i++){
		if(nodes[i] == -1){
			if(p[i] == i) continue;
			// cout << "new" <<endl;
			int j = p[i];
			// cout << i << endl;
			sum += abs(i - p[i]);
			nodes[i] = c;
			while(j != i){
				sum += abs(j - p[j]); //right?
				nodes[j] = c;
				// cout << j << endl;
				j = p[j];
			}
			c++;
		}
	}
	// cout << "here" << " " << c << endl;
	if(c == 0) return 0;
	priority_queue<pair<int,int>> q;
	vector<vector<pair<int,int>>> adj (c);
	for(int i = 0; i < N; i++){
		if(nodes[i] == -1) continue;
		while(!q.empty() && q.top().second == nodes[i]){
			q.pop();
		}
		if(!q.empty()){
			auto nb = q.top(); q.pop();
			adj[nb.second].push_back({nb.first < p[i] ? 0 : ((i - nb.first) * 2), nodes[i]});
			adj[nodes[i]].push_back({nb.first > p[i] ? 0 : ((i - nb.first) * 2), nb.second});
		}
		q.push({i,nodes[i]});
	}
	priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq;
	vector<bool> intree (c);
	intree[0] = 1;
	for(auto e : adj[0]) {
		pq.push(e);
		// cout << 0 << " " << e.second << " " << e.first << endl;
	}
	int tree = 0;
	// cout << c << endl;
	for(int i = 0; i < c - 1; i++){
		while(intree[pq.top().second]) pq.pop();	
		auto t = pq.top(); pq.pop();
		intree[t.second] = 1;
		tree += t.first;
		for(auto e : adj[t.second]){
			// cout << t.second << " " << e.second << " " << e.first << endl;
			pq.push(e);
		}
	}
	// cout << "herer" << endl;
	int md = LLONG_MAX;
	for(int i = s; i < N; i++){
		if(nodes[i] != -1){
			md = i - s;
			break;
		}
	}
	for(int i = s; i >= 0; i--){
		if(nodes[i] != -1){
			md = min(md, s - i);
			break;
		}
	}
	// cout << 2 * md << " " << sum << " " << tree << endl;
	return md * 2 + sum + tree;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct
6 Correct 1 ms 256 KB Output is correct
7 Correct 1 ms 256 KB Output is correct
8 Correct 0 ms 256 KB Output is correct
9 Correct 0 ms 256 KB Output is correct
10 Correct 0 ms 256 KB Output is correct
11 Correct 0 ms 256 KB Output is correct
12 Correct 0 ms 256 KB Output is correct
13 Correct 0 ms 256 KB Output is correct
14 Correct 0 ms 256 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 256 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Correct 0 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct
6 Correct 1 ms 256 KB Output is correct
7 Correct 1 ms 256 KB Output is correct
8 Correct 0 ms 256 KB Output is correct
9 Correct 0 ms 256 KB Output is correct
10 Correct 0 ms 256 KB Output is correct
11 Correct 0 ms 256 KB Output is correct
12 Correct 0 ms 256 KB Output is correct
13 Correct 0 ms 256 KB Output is correct
14 Correct 0 ms 256 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 256 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Correct 0 ms 256 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct
21 Correct 1 ms 384 KB Output is correct
22 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '2082', found: '788'
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct
6 Correct 1 ms 256 KB Output is correct
7 Correct 1 ms 256 KB Output is correct
8 Correct 0 ms 256 KB Output is correct
9 Correct 0 ms 256 KB Output is correct
10 Correct 0 ms 256 KB Output is correct
11 Correct 0 ms 256 KB Output is correct
12 Correct 0 ms 256 KB Output is correct
13 Correct 0 ms 256 KB Output is correct
14 Correct 0 ms 256 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 256 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Correct 0 ms 256 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct
21 Correct 1 ms 384 KB Output is correct
22 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '2082', found: '788'
23 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '3304', found: '2744'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 0 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct
6 Correct 1 ms 256 KB Output is correct
7 Correct 1 ms 256 KB Output is correct
8 Correct 0 ms 256 KB Output is correct
9 Correct 0 ms 256 KB Output is correct
10 Correct 0 ms 256 KB Output is correct
11 Correct 0 ms 256 KB Output is correct
12 Correct 0 ms 256 KB Output is correct
13 Correct 0 ms 256 KB Output is correct
14 Correct 0 ms 256 KB Output is correct
15 Correct 0 ms 256 KB Output is correct
16 Correct 0 ms 256 KB Output is correct
17 Correct 1 ms 384 KB Output is correct
18 Correct 0 ms 256 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct
21 Correct 1 ms 384 KB Output is correct
22 Incorrect 1 ms 384 KB 3rd lines differ - on the 1st token, expected: '2082', found: '788'
23 Halted 0 ms 0 KB -