Submission #468376

#TimeUsernameProblemLanguageResultExecution timeMemory
468376kessidoStations (IOI20_stations)C++17
100 / 100
1128 ms780 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define ll long long int #define vll vector<ll> #define vi vector<int> #define vvi vector<vi> #define pi pair<int, int> #define pll pair<ll, ll> #define all(x) (x).begin(), (x).end() #define fori(i,n) for(int i = 0; i < int(n); ++i) vi label(int n, int k, vi u, vi v) { vvi e(n); fori(i,n-1){ e[u[i]].push_back(v[i]); e[v[i]].push_back(u[i]); } int cur_label = 0; vi res(n, -1); auto dfs = [&](auto& self, int i, int parent, int depth) -> void { if(depth) res[i] = cur_label++; for(int j : e[i]) { if(j==parent) continue; self(self, j, i, depth^1); } if(!depth) res[i] = cur_label++; }; dfs(dfs, 0, -1, 1); assert(res[0] == 0); assert(cur_label==n); return res; } int find_next_station(int s, int t, vi c) { if(c.size() == 1) return c[0]; if(s==t) return s; sort(all(c)); int i = 0; if(s == 0) { // root while(i < c.size() && c[i] < t) i++; } else if (c.back() < s) { // case 1, s "end" if(t > s) return c.front(); while(i + 1 < c.size() && c[i + 1] <= t) i++; } else { // case 2, s is "start" if(t < s || c.back() < t) return c.back(); while(i < c.size() && c[i] < t) i++; } if(c.size() <= i) return c.front(); assert(i < c.size()); return c[i]; }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:45:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |         while(i < c.size() && c[i] < t) i++;
      |               ~~^~~~~~~~~~
stations.cpp:49:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |         while(i + 1 < c.size() && c[i + 1] <= t) i++;
      |               ~~~~~~^~~~~~~~~~
stations.cpp:53:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         while(i < c.size() && c[i] < t) i++;
      |               ~~^~~~~~~~~~
stations.cpp:55:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   55 |     if(c.size() <= i) return c.front();
      |        ~~~~~~~~~^~~~
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:56:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |     assert(i < c.size());
      |            ~~^~~~~~~~~~
#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...