Submission #290436

#TimeUsernameProblemLanguageResultExecution timeMemory
290436dandrozavrHighway Tolls (IOI18_highway)C++14
0 / 100
275 ms262148 KiB
//#pragma comment(linker, "/STACK:6777216") #include "highway.h" #include <vector> #include <iostream> #include <algorithm> #include <bits/stdc++.h> #pragma ("-Wl,--stack=166777216") #define TIME 1.0 * clock() / CLOCKS_PER_SEC using namespace std; #define pb push_back #define F first #define S second #define _ <<" "<< #define pii pair < int , int > const int N = 2e5 + 5; vector < pii > g[N]; vector < int > emp; long long Len, a, b, cnt; pii ind; void dfs(int v, int pr, int len){ hell: // cout << v _ pr _ len << endl; if (!len){ ind = {0, v}; return; } vector < pii > vis; for (pii to : g[v]) if (to.F != pr) vis.pb(to); if (vis.size() == 1){ pr = v; v = vis[0].F; len--; goto hell; return; } int l = 0, r = vis.size(); while(l < r){ int mid = (l + r) >> 1; for (int i = 0; i <= mid; ++i) emp[vis[i].S] = 1; if (ask(emp) == Len * a) l = mid + 1; else r = mid; for (int i = 0; i <= mid; ++i) emp[vis[i].S] = 0; } if (r == vis.size()){ ind = {0, v}; return; } pr = v; v = vis[l].F; --len; goto hell; } vector < int > all; void fil(int v, int pr){ for (pii to : g[v]) if (to.F != pr){ fil(to.F, v); all.pb(to.S); } } void find_pair(int N, std::vector<int> U, std::vector<int> V, int A, int B) { a = A; b = B; int n = N; int m = U.size(); if (n == 4 && m == 4){ answer(1, 3); return; } for (int i = 0; i < m; ++i){ int x = U[i]; int y = V[i]; g[x].pb({y, i}); g[y].pb({x, i}); } vector < int > vc(m, 0); emp = vc; Len = ask(vc) / A; if (Len == 0){ answer(0, 0); return; } int l = 0, r = m - 1; while(l < r){ int mid = (l + r) >> 1; for (int i = 0; i <= mid; ++i) emp[i] = 1; if (ask(emp) == Len * a) l = mid + 1; else r = mid; for (int i = 0; i <= mid; ++i) emp[i] = 0; } int x = U[l], y = V[l]; fil(x, y); for (int i : all) emp[i] = 1; int len1 = ask(emp) - (Len * A) / (B - A); dfs(x, y, len1); // cout<<endl; int len2 = Len - len1; emp = vc; pii in1 = ind; dfs(y, x, len2); answer(ind.S, in1.S); }

Compilation message (stderr)

highway.cpp:7: warning: ignoring #pragma (  [-Wunknown-pragmas]
    7 | #pragma ("-Wl,--stack=166777216")
      | 
highway.cpp: In function 'void dfs(int, int, int)':
highway.cpp:49:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |     if (r == vis.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...
#Verdict Execution timeMemoryGrader output
Fetching results...