Submission #966413

#TimeUsernameProblemLanguageResultExecution timeMemory
966413antonThe Potion of Great Power (CEOI20_potion)C++17
0 / 100
512 ms64356 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> typedef complex<int> point; const int INF = 1e9; int dist(vector<int>& a, vector<int>& b){ if(a.size() == 0 || b.size() == 0){ return INF; } int ia =0, ib = 0; int res= abs(a[0]-b[0]); while(ia<a.size()-1 || ib<b.size()-1){ if(ia==a.size()-1){ ib++; } else if(ib==b.size()-1){ ia++; } else if(a[ia]<=b[ib]){ ia++; } else{ ib++; } res = min(res, abs(a[ia]-b[ib])); } return res; } vector<vector<int>> vs; vector<int> h; set<pii> cur; vector<vector<int>> cur_vals; vector<vector<pair<int, vector<int>>>> events; int n; void init(int N, int D, int H[]) { vs.resize(N); h.resize(N); cur_vals.resize(N, vector<int>(2, 0)); events.resize(N); for(int i = 0; i<N; i++){ h[i] = H[i]; } n= N; } void curseChanges(int U, int A[], int B[]) { for(int i = 0; i<n; i++){ events[i].push_back({-1, vector<int>(2, 0)}); } for(int i = 0; i<U; i++){ int a= A[i], b= B[i]; if(cur.find({a, b})!=cur.end()){ cur.erase({a, b}); cur_vals[a][h[b]]--; cur_vals[b][h[a]]--; } else if(cur.find({b, a})!=cur.end()){ cur.erase({b, a}); cur_vals[a][h[b]]--; cur_vals[b][h[a]]--; } else{ cur.insert({a, b}); cur_vals[a][h[b]]++; cur_vals[b][h[a]]++; } events[a].push_back({i, cur_vals[a]}); events[b].push_back({i, cur_vals[b]}); } for(auto e: cur){ vs[e.first].push_back(h[e.second]); vs[e.second].push_back(h[e.first]); } } vector<int> get_last_valid(int id, int d){ int cur= 0; for(int step= (1>>30); step>=1; step/=2){ if(cur +step<events[id].size()){ if(events[id][cur+step].first<d){ cur+=step; } } } return events[id][cur].second; } int question(int x, int y, int v) { auto xv =get_last_valid(x, v); auto yv = get_last_valid(y, v); int res= INF; for(int i = 0; i<2; i++){ if(xv[i]>0 && yv[i^1]>0){ res= 1; } } for(int i = 0; i<2; i++){ if(xv[i]>0 && yv[i]>0){ res =0; } } return res; }

Compilation message (stderr)

potion.cpp: In function 'int dist(std::vector<int>&, std::vector<int>&)':
potion.cpp:17:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     while(ia<a.size()-1 || ib<b.size()-1){
      |           ~~^~~~~~~~~~~
potion.cpp:17:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |     while(ia<a.size()-1 || ib<b.size()-1){
      |                            ~~^~~~~~~~~~~
potion.cpp:18:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |         if(ia==a.size()-1){
      |            ~~^~~~~~~~~~~~
potion.cpp:21:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |         else if(ib==b.size()-1){
      |                 ~~^~~~~~~~~~~~
potion.cpp: In function 'std::vector<int> get_last_valid(int, int)':
potion.cpp:90:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, std::vector<int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   90 |         if(cur +step<events[id].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...