Submission #1245963

#TimeUsernameProblemLanguageResultExecution timeMemory
1245963LittleOrangeNile (IOI24_nile)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; struct dsu{ ll n,ans; vector<ll> p,mi,sm; dsu(const vector<ll> &a):n(a.size()),ans(0),p(a.size(),-1),mi(a),sm(a){} ll g(ll i){ return p[i]<0?i:p[i]=g(p[i]); } ll cal(ll i){ return sm[i]-(p[i]&1)*mi[i]; } void m(ll a, ll b){ a = g(a),b = g(b); if(a==b)return; ans -= cal(a)+cal(b); if(p[a]>p[b]) swap(a,b); sm[a] += sm[b]; mi[a] = min(mi[a],mi[b]); p[a] += p[b]; p[b] = a; ans += cal(a); } }; vector<long long> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e){ ll n = w.size(); ll q = e.size(); ll tot = 0; for(ll i : a) tot += i; vector<pair<ll,ll>> v; for(ll i = 0;i<n;i++) v.push_back({w[i],a[i]-b[i]}); sort(v.begin(),v.end()); vector<ll> h(n); for(ll i = 0;i<n;i++) h[i] = v[i].second; dsu d(h); vector<pair<ll,ll>> u; for(ll i = 0;i<n-1;i++) u.push_back({v[i+1].first-v[i].first,i}); sort(u.begin(),u.end()); vector<pair<ll,ll>> o; o.push_back({0,0}); for(auto [dd,i] : u){ d.m(i,i+1); o.push_back({dd,d.ans}); } vector<ll> ret(q); for(ll i = 0;i<q;i++){ ret[i] = *--lower_bound(o.begin(),o.end(),make_pair((ll)e[i]+1,0ll)); } return ret; }

Compilation message (stderr)

nile.cpp: In function 'std::vector<long long int> calculate_costs(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
nile.cpp:48:18: error: cannot convert 'std::pair<long long int, long long int>' to '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'} in assignment
   48 |         ret[i] = *--lower_bound(o.begin(),o.end(),make_pair((ll)e[i]+1,0ll));
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                  |
      |                  std::pair<long long int, long long int>