# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
395359 | abc864197532 | Swapping Cities (APIO20_swap) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define local
#ifdef local
#include "grader_swap.cpp"
#else
#endif
using namespace std;
#define lli long long int
#define mp make_pair
#define pb push_back
#define eb emplace_back
#define test(x) cout << "Line(" << __LINE__ << ") " #x << ' ' << x << endl
#define printv(x) {\
for (auto i : x) cout << i << ' ';\
cout << endl;\
}
#define pii pair <int, int>
#define pll pair <lli, lli>
#define X first
#define Y second
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
template<typename A, typename B>
ostream& operator << (ostream& o, pair<A, B> a){
return o << a.X << ' ' << a.Y;
}
template<typename A, typename B>
istream& operator >> (istream& o, pair<A, B> &a){
return o >> a.X >> a.Y;
}
const int mod = 1e9 + 7, abc = 864197532, Doludu = 123, N = 100001, logN = 18, K = 40;
int n, m;
vector <int> w;
int a1 = 1 << 30, a2 = 1 << 30, a3 = 1 << 30;
void init(int _n, int _m, vector <int> _u, vector <int> _v, vector <int> _w) {
n = _n;
w.resize(n);
for (int i = 0; i < m; ++i) {
w[_v[i]] = _w[i];
if (a1 >= _w[i]) a3 = a2, a2 = a1, a1 = w[i];
else if (a2 >= _w[i]) a3 = a2, a2 = _w[i];
else if (a3 >= _w[i]) a3 = _w[i];
}
}
int getMinimumFuelCapacity(int u, int v) {
if (n <= 3) return -1;
if (u == 0) {
if (a1 == w[v]) return a3;
return max(a2, w[v]);
} else {
if (a1 == w[v] && a2 == w[u]) return a3;
if (a1 == w[u] && a2 == w[v]) return a3;
if (a1 == w[v] || a1 == w[u]) return max({a2, w[v], w[u]});
return max({a1, w[v], w[u]});
}
}