Submission #1346100

#TimeUsernameProblemLanguageResultExecution timeMemory
1346100coderg300711Nile (IOI24_nile)C++20
Compilation error
0 ms0 KiB
#include "bits/stdc++.h"
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pii pair<int,int>
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
typedef unsigned long long ull;
typedef long double lld;
//template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
#define V vector

#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x <<" "; _print(x); cerr << endl;
#else
#define debug(x)
#endif

void _print(ll t) {cerr << t;}
void _print(int t) {cerr << t;}
void _print(string t) {cerr << t;}
void _print(char t) {cerr << t;}
void _print(lld t) {cerr << t;}
void _print(double t) {cerr << t;}
void _print(ull t) {cerr << t;}

template <class T, class V> void _print(pair <T, V> p);
template <class T> void _print(vector <T> v);
template <class T> void _print(set <T> v);
template <class T, class V> void _print(map <T, V> v);
template <class T> void _print(multiset <T> v);
template <class T, class V> void _print(pair <T, V> p) {cerr << "{"; _print(p.ff); cerr << ","; _print(p.ss); cerr << "}";}
template <class T> void _print(vector <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(set <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T> void _print(multiset <T> v) {cerr << "[ "; for (T i : v) {_print(i); cerr << " ";} cerr << "]";}
template <class T, class V> void _print(map <T, V> v) {cerr << "[ "; for (auto i : v) {_print(i); cerr << " ";} cerr << "]";}

struct artecfact{
  int w,a,b;
  bool operator<(const artecfact& x) const {
    return w<x.w;
  }
};

V<ll> calculate_costs(V<int> W,V<int> A,V<int> B,V<int> E){
  int n=sz(W),q=sz(E);
  V<artecfact> items(n);
  FOR(i,n)items[i]={W[i],A[i],B[i]};
  sort(items.begin(),items.end());
  V<ll> res(q);
  const ll inf=1e18;
  FOR(j,q){
    ll d=E[j];
    V<ll> dp(n+1,0);
    if(n>=1)dp[1]=items[0].a;
    if(n>=2){
      ll alone=dp[1]+items[1].a,cost=inf;
      if(items[1].w-items[0].w<=d)cost=(ll)items[0].b+items[1].b;
      dp[2]=min(alone,cost);
    }
    F(i,3,n+1){
      int id=i-1;
      ll cost=dp[i-1]+items[id].a;
      if(items[id].w-items[id-1].w<=d){
        ll cur=dp[i-2]+items[id-1].b+items[id].b;
        cost=min(cost,cur);
      }
      if(items[id].w-items[id-2]<=d){
        ll jump=dp[i-3]+items[id-2].b+items[id-1].a+items[id].b;
        cost=min(cost,jump);
      }
      dp[i]=cost;
    }
    res[j]=dp[n];
  }
  return res;
}

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:80:21: error: no match for 'operator-' (operand types are 'int' and '__gnu_cxx::__alloc_traits<std::allocator<artecfact>, artecfact>::value_type' {aka 'artecfact'})
   80 |       if(items[id].w-items[id-2]<=d){
In file included from /usr/include/c++/13/bits/stl_algobase.h:67,
                 from /usr/include/c++/13/algorithm:60,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from nile.cpp:1:
/usr/include/c++/13/bits/stl_iterator.h:625:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__y.base() - __x.base())) std::operator-(const reverse_iterator<_IteratorL>&, const reverse_iterator<_IteratorR>&)'
  625 |     operator-(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:625:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::reverse_iterator<_IteratorL>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/bits/stl_iterator.h:1800:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__x.base() - __y.base())) std::operator-(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1800 |     operator-(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/13/bits/stl_iterator.h:1800:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
In file included from /usr/include/c++/13/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:127:
/usr/include/c++/13/complex:365:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const complex<_Tp>&, const complex<_Tp>&)'
  365 |     operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/13/complex:365:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::complex<_Tp>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/complex:374:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const complex<_Tp>&, const _Tp&)'
  374 |     operator-(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~~~~~~
/usr/include/c++/13/complex:374:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::complex<_Tp>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/complex:383:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const _Tp&, const complex<_Tp>&)'
  383 |     operator-(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/13/complex:383:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   '__gnu_cxx::__alloc_traits<std::allocator<artecfact>, artecfact>::value_type' {aka 'artecfact'} is not derived from 'const std::complex<_Tp>'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/complex:460:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const complex<_Tp>&)'
  460 |     operator-(const complex<_Tp>& __x)
      |     ^~~~~~~~
/usr/include/c++/13/complex:460:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::complex<_Tp>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
In file included from /usr/include/c++/13/valarray:605,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:166:
/usr/include/c++/13/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const typename _Dom::value_type&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   '__gnu_cxx::__alloc_traits<std::allocator<artecfact>, artecfact>::value_type' {aka 'artecfact'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const _Expr<_Dom1, typename _Dom1::value_type>&, const valarray<typename _Dom::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const valarray<typename _Dom::value_type>&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   '__gnu_cxx::__alloc_traits<std::allocator<artecfact>, artecfact>::value_type' {aka 'artecfact'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/valarray:1197:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const valarray<_Tp>&, const valarray<_Tp>&)'
 1197 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/valarray:1197:1: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::valarray<_Tp>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/valarray:1197:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const valarray<_Tp>&, const typename valarray<_Tp>::value_type&)'
 1197 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/valarray:1197:1: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   mismatched types 'const std::valarray<_Tp>' and 'int'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^
/usr/include/c++/13/valarray:1197:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const typename valarray<_Tp>::value_type&, const valarray<_Tp>&)'
 1197 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/valarray:1197:1: note:   template argument deduction/substitution failed:
nile.cpp:80:32: note:   '__gnu_cxx::__alloc_traits<std::allocator<artecfact>, artecfact>::value_type' {aka 'artecfact'} is not derived from 'const std::valarray<_Tp>'
   80 |       if(items[id].w-items[id-2]<=d){
      |                                ^