Submission #979644

#TimeUsernameProblemLanguageResultExecution timeMemory
979644vjudge1Swapping Cities (APIO20_swap)C++17
13 / 100
1338 ms45276 KiB
#include <time.h> #include <cstdlib> #include <stack> #include <numeric> #include <unordered_map> #include <unordered_set> #include <iomanip> #include <map> #include <set> #include <iterator> #include <deque> #include <queue> #include <sstream> #include <array> #include <string> #include <tuple> #include <chrono> #include <cassert> #include <cstdio> #include <cstring> #include <list> #include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <bitset> #include "swap.h" #include <cassert> #include <cstdio> using namespace std; vector<pair<int, int>> g[200005]; pair<int, int> p[200005]; map<pair<int, int>, int> mp, pos; set<pair<int, int>> st; int x, y, mx; bool ok = 0; void init(int N, int M, std::vector<int> U, std::vector<int> V, std::vector<int> W) { x = N; y = M; if(x - 1 != y) ok = 1; for(int i = 0; i < M; i++){ int a = U[i] + 1, b = V[i] + 1, c = W[i]; if(a != 1) ok = 1; g[a].push_back({b, c}); g[b].push_back({a, c}); mp[{a, b}] = c; mp[{b, a}] = c; pos[{a, b}] = i + 1; pos[{b, a}] = i + 1; st.insert({c, i + 1}); } } int getMinimumFuelCapacity(int X, int Y) { if(ok){ X++; Y++; if(x - 1 == y) return -1; else return st.rbegin()->first; } X++; Y++; if(x <= 3) return -1; int mx = 0; if(X != 1) mx = mp[{1, X}]; if(Y != 1) mx = max(mx, mp[{1, Y}]); if(X != 1) st.erase({mp[{1, X}], pos[{1, X}]}); if(Y != 1) st.erase({mp[{1, Y}], pos[{1, Y}]}); pair<int, int> p = *st.begin(); st.erase(st.begin()); if(X != 1 && Y != 1){ st.insert(p); if(X != 1) st.insert({mp[{1, X}], pos[{1, X}]}); if(Y != 1) st.insert({mp[{1, Y}], pos[{1, Y}]}); return max(mx, p.first); } else{ pair<int, int> p1 = *st.begin(); st.insert(p1); st.insert(p); if(X != 1) st.insert({mp[{1, X}], pos[{1, X}]}); if(Y != 1) st.insert({mp[{1, Y}], pos[{1, Y}]}); return max({mx, p.first, p1.first}); } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...