Submission #1220796

#TimeUsernameProblemLanguageResultExecution timeMemory
1220796abdelhakimOvertaking (IOI23_overtaking)C++20
Compilation error
0 ms0 KiB
#include "overtaking.h"
#include <bits/stdc++.h>
#define ll long long
#define dbg(x) cerr << #x << ' ' << x << endl;
using namespace std;
ll l,n;
vector<ll> t;
vector<ll> w;
ll x, m;
vector<ll> s;
vector<vector<ll>> p;
vector<vector<vector<ll>>> v;
bool comp(vector<ll>& a, vector<ll>& b) {
    return a[0] < b[0]; 
}

void init(int L, int N, std::vector<long long> T, std::vector<int> W, int X, int M, std::vector<int> S)
{
    p.assign(M,vector<ll>(N));
    v.resize(M);
    
    l=L;
    n=N;
    t=T;
    for (int i=0;i<n;i++) w.push_back(W[i]);
    x=X;
    m=M;
    for (int i=0;i<n;i++) s.push_back(S[i]);
    for (int i=0;i<n;i++)
    {   
       vector<ll> tr={t[i],(ll)((s[1]-s[0])*w[i])+t[i],(ll)i};
        v[0].push_back(tr);
    }
    sort(v[0].begin(),v[0].end(),comp);
    for (int i=0;i<n;i++)
    {
        if(i==0) p[0][i]=v[0][i][1];
        else p[0][i]=max(v[0][i][1],p[0][i-1]);
    }
    for (int i=0;i<m-1;i++)
    {
        sort(v[i].begin(), v[i].end(),comp);
        ll lst=0;
        for (int j=0;j<v[i].size();j++)
        {
            ll e=(s[i+1]-s[i])*w[v[i][j].back()]+v[i][j][0];
            v[i][j][1]=e;
            if(j!=0 && v[i][j][0]>v[i][j-1][0])
            {
                lst=p[i][j-1];
            }
            v[i+1].push_back({max(e,lst),-1,v[i][j].back()});
            p[i][j]=max(e,p[i][j-1+(j==0)]);
        }
    }
    return;
}

long long arrival_time(long long Y)
{
    ll curt=Y;
    for (int i=0;i<m-1;i++)
    {
        ll e=curt+(ll)(s[i+1]-s[i])*x;
        ll ind=lower_bound(v[i].begin(),v[i].end(),vector<ll>({curt,0,0}),comp)-v[i].begin()-1;
        if(ind>=0 && ind<n)
        {
            e=max(e,p[i][ind]);
        }
        curt=e;
    }
    return curt;
}

Compilation message (stderr)

In file included from /usr/include/c++/11/bits/stl_algobase.h:71,
                 from /usr/include/c++/11/vector:60,
                 from overtaking.h:1,
                 from overtaking.cpp:1:
/usr/include/c++/11/bits/predefined_ops.h: In instantiation of 'constexpr bool __gnu_cxx::__ops::_Iter_comp_val<_Compare>::operator()(_Iterator, _Value&) [with _Iterator = __gnu_cxx::__normal_iterator<std::vector<long long int>*, std::vector<std::vector<long long int> > >; _Value = const std::vector<long long int>; _Compare = bool (*)(std::vector<long long int>&, std::vector<long long int>&)]':
/usr/include/c++/11/bits/stl_algobase.h:1464:14:   required from 'constexpr _ForwardIterator std::__lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<std::vector<long long int>*, std::vector<std::vector<long long int> > >; _Tp = std::vector<long long int>; _Compare = __gnu_cxx::__ops::_Iter_comp_val<bool (*)(std::vector<long long int>&, std::vector<long long int>&)>]'
/usr/include/c++/11/bits/stl_algo.h:2021:32:   required from 'constexpr _FIter std::lower_bound(_FIter, _FIter, const _Tp&, _Compare) [with _FIter = __gnu_cxx::__normal_iterator<std::vector<long long int>*, std::vector<std::vector<long long int> > >; _Tp = std::vector<long long int>; _Compare = bool (*)(std::vector<long long int>&, std::vector<long long int>&)]'
overtaking.cpp:65:27:   required from here
/usr/include/c++/11/bits/predefined_ops.h:196:30: error: binding reference of type 'std::vector<long long int>&' to 'const std::vector<long long int>' discards qualifiers
  196 |         { return bool(_M_comp(*__it, __val)); }
      |                       ~~~~~~~^~~~~~~~~~~~~~