Submission #908060

#TimeUsernameProblemLanguageResultExecution timeMemory
908060AlfraganusTwo Currencies (JOI23_currencies)C++17
10 / 100
68 ms14696 KiB
#pragma GCC optimize("unroll-loops") #pragma gcc optimize("Ofast") #pragma GCC optimization("Ofast") #pragma optimize(Ofast) #include <bits/stdc++.h> using namespace std; #define int long long #define str string #define fastio ios::sync_with_stdio(0), cin.tie(0); #define fs first #define ss second #define endl '\n' #define all(x) (x).begin(), (x).end() #define len(x) x.size() #define print(a) \ for (auto &x : a) \ cout << x << " "; \ cout << endl; #define printmp(a) \ for (auto &x : a) \ cout << x.fs << " " << x.ss << endl; const int mod = 998244353; vector<vector<pair<int, int>>> tree; vector<int> degree, c; vector<pair<int, int>> p; vector<vector<int>> k; bitset<2001> used; void dfs(int n){ used[n] = 1; for(auto &x : tree[n]){ if(!used[x.fs]){ p[x.fs] = {n, x.ss}; degree[x.fs] = degree[n] + 1; dfs(x.fs); } } } void dfs(int s, int t){ if(s == t) return; if(degree[s] >= degree[t]){ for(auto x : k[p[s].ss]) c.push_back(x); dfs(p[s].fs, t); } else{ for(auto x : k[p[t].ss]) c.push_back(x); dfs(s, p[t].fs); } } void solve(){ int n, m, q; cin >> n >> m >> q; tree.resize(n + 1); for(int i = 0; i < n - 1; i ++){ int u, v; cin >> u >> v; tree[u].push_back({v, i + 1}); tree[v].push_back({u, i + 1}); } k.resize(n); for(int i = 0; i < m; i ++){ int u, v; cin >> u >> v; k[u].push_back(v); } if(n <= 2000 and m <= 2000 and q <= 2000){ degree.resize(n + 1); p.resize(n + 1); dfs(1); while(q --){ int s, t, x, y; cin >> s >> t >> x >> y; dfs(s, t); sort(all(c)); for(int j = 0; j < c.size(); j ++){ if(c[j] <= y) y -= c[j]; else{ x -= c.size() - j; break; } } if(x >= 0) cout << x; else cout << -1; cout << endl; c.clear(); } } else{ } } signed main() { fastio int t = 1; // cin >> t; while (t--) { solve(); cout << endl; } }

Compilation message (stderr)

currencies.cpp:2: warning: ignoring '#pragma gcc optimize' [-Wunknown-pragmas]
    2 | #pragma gcc optimize("Ofast")
      | 
currencies.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    3 | #pragma GCC optimization("Ofast")
      | 
currencies.cpp:4: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    4 | #pragma optimize(Ofast)
      | 
currencies.cpp: In function 'void solve()':
currencies.cpp:85:30: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   85 |             for(int j = 0; j < c.size(); j ++){
      |                            ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...