Submission #293734

# Submission time Handle Problem Language Result Execution time Memory
293734 2020-09-08T11:01:47 Z Hemimor Teleporters (IOI08_teleporters) C++14
100 / 100
480 ms 29164 KB
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <numeric>
#include <cassert>
#include <vector>
#include <cmath>
#include <queue>
#include <set>
#include <map>
#define syosu(x) fixed<<setprecision(x)
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef pair<double,double> pdd;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<string> vs;
typedef vector<P> vp;
typedef vector<vp> vvp;
typedef vector<pll> vpll;
typedef pair<P,int> pip;
typedef vector<pip> vip;
const int inf=1<<30;
const ll INF=1ll<<60;
const double pi=acos(-1);
const double eps=1e-8;
const ll mod=1e9+7;
const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};

const int M=2000000;
int n,m,a[M];
bool b[M];

int f(int x){
	x++;
	while(x<M&&!b[x]&&a[x]==-1) x++;
	return x;
}

int main(){
	fill(a,a+M,-1);
	scanf("%d",&n);
	scanf("%d",&m);
	int v=inf;
	for(int i=0;i<n;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		x--,y--;
		a[x]=y;
		a[y]=x;
		v=min({v,x,y});
	}
	int res=0;
	while(1){
		b[v]=true;
		v=f(a[v]);
		res++;
		if(v==M) break;
	}
	vi c;
	for(int i=0;i<M;i++) if(a[i]>=0&&!b[i]){
		v=i;
		int tmp=0;
		while(1){
			b[v]=true;
			v=f(a[v]);
			tmp++;
			if(b[v]) break;
		}
		c.push_back(tmp);
	}
	sort(c.rbegin(),c.rend());
	int I=0;
	while(m&&I<c.size()){
		res+=2+c[I++];
		m--;
	}
	res+=2*m-m%2;
	printf("%d\n",res);
}

Compilation message

teleporters.cpp: In function 'int main()':
teleporters.cpp:82:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |  while(m&&I<c.size()){
      |           ~^~~~~~~~~
teleporters.cpp:50:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   50 |  scanf("%d",&n);
      |  ~~~~~^~~~~~~~~
teleporters.cpp:51:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   51 |  scanf("%d",&m);
      |  ~~~~~^~~~~~~~~
teleporters.cpp:55:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   55 |   scanf("%d%d",&x,&y);
      |   ~~~~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 11 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 8192 KB Output is correct
2 Correct 15 ms 8320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 14 ms 8192 KB Output is correct
2 Correct 15 ms 8320 KB Output is correct
3 Correct 20 ms 8576 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 15 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 8192 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 60 ms 9084 KB Output is correct
2 Correct 164 ms 14716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 109 ms 10100 KB Output is correct
2 Correct 239 ms 10868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 307 ms 12276 KB Output is correct
2 Correct 368 ms 23532 KB Output is correct
3 Correct 358 ms 25836 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 426 ms 12272 KB Output is correct
2 Correct 458 ms 26220 KB Output is correct
3 Correct 426 ms 24480 KB Output is correct
4 Correct 432 ms 24696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 464 ms 14320 KB Output is correct
2 Correct 467 ms 14312 KB Output is correct
3 Correct 321 ms 29044 KB Output is correct
4 Correct 480 ms 29164 KB Output is correct