Submission #592299

#TimeUsernameProblemLanguageResultExecution timeMemory
592299farhan132기지국 (IOI20_stations)C++17
0 / 100
1 ms584 KiB
#include "stations.h"
#include <bits/stdc++.h>
 
using namespace std;
 
typedef int ll;
typedef pair<ll , ll> ii;
 
#define ff first
#define ss second
#define pb push_back
#define in insert
 
const ll N = 1005;
vector < ll > v[N];
vector < int > labels;
 
ll in[N], out[N];
ll tim = 0;
 
void dfs(ll s, ll p = -1, ll d = 0){
	in[s] = tim; tim++;
	for(auto u : v[s]){
		if(u - p){
			dfs(u, s, d + 1);
		}
	}
	out[s] = tim; tim++;
	if(d&1) labels[s] = (in[s]/2);
	else labels[s] = (out[s]/2);
}
 
std::vector<int> label(int n, int k, std::vector<int> U, std::vector<int> V) {
 
	for(ll i = 0; i < n; i++) v[i].clear();
	labels.resize(0); tim = 0;
	
	for(ll i = 0; i < n - 1; i++){
		ll x = U[i], y = V[i];
		v[x].pb(y);
		v[y].pb(x);
	}
	labels.resize(n);
	set < ll > s;

	for(ll i = 0; i < n; i++){
		s.in(labels[i]);
	}
	assert(s.size() == n);
 
	dfs(0);
 
 
	//for(auto u : labels) cout << u << ' ';
	//cout << '\n';
 
	return labels;
}
 
int find_next_station(int s, int t, std::vector<int> c) {
	if(c.size() == 1){
		return c[0];
	}
	//s = (s * 2) + 1;
	//t = (t * 2) + 1;
	for(ll i = 0; i < c.size(); i++){
		//c[i] = (c[i] * 2) + 1;
	}
	sort(c.begin(), c.end());
	if(s == 1){
		c.pb(1e9);
		for(ll i = 1; i < c.size(); i++){
			if(t < c[i]) return (c[i - 1]);
		}
	}
	bool f = 1;
	for(auto u : c){
		if(u <= s) f = 0;
	}
	if(f){
		// s is IN
		ll par = c.back(); c.pop_back();
		c.emplace(c.begin(), s);
		for(ll i = 1; i < c.size(); i++){
			if(c[i - 1] < t && t <= c[i]) return (c[i]);
		}
		return (par);
	}
	// s is OUT
	ll par = c[0];
	c.pb(s);
	for(ll i = 2; i < c.size(); i++){
		if(c[i - 1] <= t && t < c[i]) return (c[i - 1]);
	}
	return (par);
}

Compilation message (stderr)

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from stations.cpp:2:
stations.cpp: In function 'std::vector<int> label(int, int, std::vector<int>, std::vector<int>)':
stations.cpp:49:18: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   49 |  assert(s.size() == n);
      |         ~~~~~~~~~^~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:66:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |  for(ll i = 0; i < c.size(); i++){
      |                ~~^~~~~~~~~~
stations.cpp:72:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |   for(ll i = 1; i < c.size(); i++){
      |                 ~~^~~~~~~~~~
stations.cpp:84:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |   for(ll i = 1; i < c.size(); i++){
      |                 ~~^~~~~~~~~~
stations.cpp:92:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |  for(ll i = 2; i < c.size(); i++){
      |                ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...