Submission #431929

#TimeUsernameProblemLanguageResultExecution timeMemory
431929gonengazitStations (IOI20_stations)C++14
52.32 / 100
922 ms824 KiB
#include "stations.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define ii pair<int,int>
#define x first
#define y second
vector<int> labels;
vector<vector<int>> g;
int tme;
// void dfs1(int i,int f=0,int t=0, int s=0){
// 	int tin=++tme;
// 	for(auto u:g[i]){
// 		if(u!=f){
// 			dfs1(u,i,(t+1)%2,(s+1)%3);
// 		}
// 	}
// 	int tout=tme;
// 	if(t==0){
// 		labels[i]=6*tin+3*t+s;
// 	}
// 	else{
// 		labels[i]=6*(tin+tout)+3*t+s;
// 	}
// }

void dfs1(int i, int f=0){
	int tin=++tme;
	for(auto u:g[i]){
		if(u!=f){
			dfs1(u,i);
		}
	}
	int tout=tme;
	labels[i]=tin*1000+tout;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	tme=-1;
	labels.assign(n,-1);
	g.assign(n,vector<int>());
	for(int i=0; i<n-1; i++){
		g[u[i]].push_back(v[i]);
		g[v[i]].push_back(u[i]);
	}
	dfs1(0);
	return labels;
}

ii get(int x){
	return ii(x/3%2,x%3);
}
int find_next_station(int s, int t, std::vector<int> c) {
	int tin=t/1000;
	int tout=t%1000;

	int sin=s/1000;
	int sout=s%1000;

	int f;
	for(auto i:c){
		int in=i/1000;
		int out=i%1000;
		if(in<sin){
			f=i;
			continue;
		}
		if (tin>=in&&tout<=out){
			return i;
		}
	}
	return f;
	// ii r=get(s);
	// s/=6;
	// vector<pair<ii,int>> cld;
	// int f=-1;
	// if(r.x==0){
	// 	int prev=s;
	// 	for(auto i:c){
	// 		if(get(i).y!=(r.y+1)%3){
	// 			f=i;
	// 			continue;
	// 		}
	// 		int k=i/6;
	// 		cld.emplace_back(ii(prev+1,k-(prev+1)),i);
	// 		prev=k-(prev+1);
	// 	}
	// }
	// else{
	// 	for(auto i:c){
	// 		if(get(i).y!=(r.y+1)%3){
	// 			f=i;
	// 			continue;
	// 		}
	// 		if(!cld.empty())
	// 			cld.back().x.y=i/6-1;
	// 		cld.emplace_back(ii(i/6,-1),i);
	// 	}
	// 	if(!cld.empty()){
	// 		cld.back().x.y=s-(cld[0].x.x-1);
	// 	}
	// }

	// ii h=get(t);
	// t/=6;

	// for(auto i:cld){
	// 	if(h.x==0&&i.x.x<=t&&i.x.y>=t){
	// 		return i.y;
	// 	}
	// 	else if(h.x==1&&2*i.x.x<=t&&2*i.x.y>=t){
	// 		return i.y;
	// 	}
	// }
	// return f;
}
/*
1
5 100
0 1
1 2
1 3
2 4
3
0 1 2
1 2 2
1 4 2*/

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:57:6: warning: unused variable 'sout' [-Wunused-variable]
   57 |  int sout=s%1000;
      |      ^~~~
stations.cpp:59:6: warning: 'f' may be used uninitialized in this function [-Wmaybe-uninitialized]
   59 |  int f;
      |      ^
#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...