Submission #95136

# Submission time Handle Problem Language Result Execution time Memory
95136 2019-01-27T14:44:33 Z Retro3014 Teleporters (IOI08_teleporters) C++17
85 / 100
615 ms 66560 KB
#include <iostream>
#include <algorithm>
#include <vector>
#include <stdio.h>

#define MAX_X 2000010
using namespace std;
typedef long long ll;
int N, M;
struct S{
	S(int x, int y) : x(x), y(y) {}
	int x, y;
};
vector<S> v;
int g[MAX_X+1];
vector<int> v2;
int r[MAX_X+1];
bool vst[MAX_X+1];

vector<int> cycle;
int ans;

void dfs(int x, ll y){
	if(vst[x]){
		cycle.push_back(y);
		return;
	}
	vst[x] = true;
	if(x==v2.size()-1){
		ans+=y;
		return;
	}
	dfs(r[x], y+1);
}

int main(){
	scanf("%d%d", &N, &M);
	for(int i=0; i<N; i++){
		int a, b; scanf("%d%d", &a, &b);
		v.push_back({a, b});
		v2.push_back(a); v2.push_back(b);
	}
	v2.push_back(0); sort(v2.begin(), v2.end());
	for(int i=0; i<v2.size(); i++){
		g[v2[i]] = i;
	}
	S now=v[0];
	for(int i=0; i<v.size(); i++){
		now = v[i];
		r[g[now.x]-1] = g[now.y];
		r[g[now.y]-1] = g[now.x];
	}
	for(int i=0; i<v2.size(); i++){
		if(vst[i])	continue;
		dfs(i, 0);
	}
	v2.clear();
	/*printf("%d\n", ans);
	for(int i=0; i<cycle.size(); i++){
		printf("%d\n", cycle[i]);
	}*/
	sort(cycle.begin(), cycle.end());
	while(M--){
		if(cycle.empty()){
			cycle.push_back(1);
			ans++;
		}else{
			ans+=2+cycle.back();
			cycle.pop_back();
		}
	}
	printf("%d", ans);
	return 0;
}

Compilation message

teleporters.cpp: In function 'void dfs(int, ll)':
teleporters.cpp:29:6: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  if(x==v2.size()-1){
     ~^~~~~~~~~~~~~
teleporters.cpp: In function 'int main()':
teleporters.cpp:44:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v2.size(); i++){
               ~^~~~~~~~~~
teleporters.cpp:48:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v.size(); i++){
               ~^~~~~~~~~
teleporters.cpp:53:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0; i<v2.size(); i++){
               ~^~~~~~~~~~
teleporters.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d", &N, &M);
  ~~~~~^~~~~~~~~~~~~~~~
teleporters.cpp:39:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   int a, b; scanf("%d%d", &a, &b);
             ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 632 KB Output is correct
2 Correct 6 ms 1144 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 760 KB Output is correct
2 Correct 7 ms 1272 KB Output is correct
3 Correct 15 ms 3416 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 1528 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 1524 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 57 ms 8780 KB Output is correct
2 Correct 156 ms 20156 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 101 ms 14028 KB Output is correct
2 Correct 254 ms 32064 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 386 ms 32000 KB Output is correct
2 Correct 477 ms 36652 KB Output is correct
3 Runtime error 469 ms 66560 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
# Verdict Execution time Memory Grader output
1 Correct 599 ms 43656 KB Output is correct
2 Correct 615 ms 44900 KB Output is correct
3 Runtime error 569 ms 66560 KB Execution killed with signal 9 (could be triggered by violating memory limits)
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 603 ms 65920 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)
2 Halted 0 ms 0 KB -