Submission #669973

#TimeUsernameProblemLanguageResultExecution timeMemory
669973dozerThe Potion of Great Power (CEOI20_potion)C++14
38 / 100
1318 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define fileio() freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout) #define fastio() cin.tie(0), ios_base::sync_with_stdio(0) #define pb push_back #define sp " " //#define endl "\n" #define pii pair<int, int> #define st first #define nd second #define LOGN 18 vector<pair<vector<int>, int>> curr[100005]; int arr[100005], n; void init(int N, int D, int H[]) { n = N; for (int i = 0; i < N; i++) arr[i] = H[i]; } void curseChanges(int U, int A[], int B[]) { for (int i = 0; i < U; i++) { int a = A[i], b = B[i]; vector<int> x, y; int flag = 0; if (!curr[a].empty()) { for (auto j : curr[a].back().st) { if (j == b) flag = 1; else x.pb(j); } } if (flag == 0) x.pb(b); if (!curr[b].empty()) { for (auto j : curr[b].back().st) { if (j == a) flag = 1; else y.pb(j); } } if (flag == 0) y.pb(a); curr[a].pb({x, i}); curr[b].pb({y, i}); } } int question(int x, int y, int v) { int a = 0, b = 0; if (curr[x].empty() || curr[y].empty()) return 1e9; for (int i = LOGN; i >= 0; i--) { int tmp1 = a + (1<<i), tmp2 = b + (1<<i); if (tmp1 < curr[x].size() && curr[x][tmp1].nd < v) a = tmp1; if (tmp2 < curr[y].size() && curr[y][tmp2].nd < v) b = tmp2; } if (curr[x][a].nd >= v || curr[y][b].nd >= v) return 1e9; int i = 0, j = 0; int ans = 1e9; vector<int> k, l; for (auto i : curr[x][a].st) k.pb(arr[i]); for (auto i : curr[y][b].st) l.pb(arr[i]); sort(k.begin(), k.end()); sort(l.begin(), l.end()); while(i < k.size() && j < l.size()) { ans = min(ans, abs(k[i] - l[j])); if (k[i] < l[j]) i++; else j++; } return ans; }

Compilation message (stderr)

potion.cpp: In function 'int question(int, int, int)':
potion.cpp:57:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::vector<int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |         if (tmp1 < curr[x].size() && curr[x][tmp1].nd < v) a = tmp1;
      |             ~~~~~^~~~~~~~~~~~~~~~
potion.cpp:58:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::vector<int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |         if (tmp2 < curr[y].size() && curr[y][tmp2].nd < v) b = tmp2;
      |             ~~~~~^~~~~~~~~~~~~~~~
potion.cpp:68:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |     while(i < k.size() && j < l.size())
      |           ~~^~~~~~~~~~
potion.cpp:68:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   68 |     while(i < k.size() && j < l.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...