Submission #335119

#TimeUsernameProblemLanguageResultExecution timeMemory
335119blueDetecting Molecules (IOI16_molecules)C++17
Compilation error
0 ms0 KiB
#include "molecules.h"
#include <vector>
using namespace std;

vector<int> W;
int n;

vector<int> find_subset(int l, int u, vector<int> w)
{
    W = w;
    n = w.size();

    int i, x;

    vector<int> I(n);
    for(i = 0; i < n; i++) I[i] = i;

    sort(I, I+n, [] (int x, int y)
    {
        return W[x] < W[y];
    });

    int sum = 0;
    vector<int> empty_res;
    vector<int> res;

    if(w[I[0]] > u) return empty_res;

    for(x = 0; x < n && sum < l; x++)
    {
        i = I[x];
        sum += w[i];
        res.push_back(i);
    }
    if(sum < l) return empty_res;
    x--;
    sum -= x[I[x]];
    res.pop_back();

    res.push_back(I[n-1]);
    return res;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:18:14: error: no match for 'operator+' (operand types are 'std::vector<int>' and 'int')
   18 |     sort(I, I+n, [] (int x, int y)
      |             ~^~
      |             | |
      |             | int
      |             std::vector<int>
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/vector:60,
                 from molecules.h:3,
                 from molecules.cpp:1:
/usr/include/c++/9/bits/stl_iterator.h:423:5: note: candidate: 'template<class _Iterator> constexpr std::reverse_iterator<_Iterator> std::operator+(typename std::reverse_iterator<_Iterator>::difference_type, const std::reverse_iterator<_Iterator>&)'
  423 |     operator+(typename reverse_iterator<_Iterator>::difference_type __n,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:423:5: note:   template argument deduction/substitution failed:
molecules.cpp:18:15: note:   mismatched types 'const std::reverse_iterator<_Iterator>' and 'int'
   18 |     sort(I, I+n, [] (int x, int y)
      |               ^
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/vector:60,
                 from molecules.h:3,
                 from molecules.cpp:1:
/usr/include/c++/9/bits/stl_iterator.h:1219:5: note: candidate: 'template<class _Iterator> constexpr std::move_iterator<_IteratorL> std::operator+(typename std::move_iterator<_IteratorL>::difference_type, const std::move_iterator<_IteratorL>&)'
 1219 |     operator+(typename move_iterator<_Iterator>::difference_type __n,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:1219:5: note:   template argument deduction/substitution failed:
molecules.cpp:18:15: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'int'
   18 |     sort(I, I+n, [] (int x, int y)
      |               ^
In file included from /usr/include/c++/9/vector:68,
                 from molecules.h:3,
                 from molecules.cpp:1:
/usr/include/c++/9/bits/stl_bvector.h:303:3: note: candidate: 'std::_Bit_iterator std::operator+(std::ptrdiff_t, const std::_Bit_iterator&)'
  303 |   operator+(ptrdiff_t __n, const _Bit_iterator& __x)
      |   ^~~~~~~~
/usr/include/c++/9/bits/stl_bvector.h:303:23: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::ptrdiff_t' {aka 'long int'}
  303 |   operator+(ptrdiff_t __n, const _Bit_iterator& __x)
      |             ~~~~~~~~~~^~~
/usr/include/c++/9/bits/stl_bvector.h:393:3: note: candidate: 'std::_Bit_const_iterator std::operator+(std::ptrdiff_t, const std::_Bit_const_iterator&)'
  393 |   operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
      |   ^~~~~~~~
/usr/include/c++/9/bits/stl_bvector.h:393:23: note:   no known conversion for argument 1 from 'std::vector<int>' to 'std::ptrdiff_t' {aka 'long int'}
  393 |   operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
      |             ~~~~~~~~~~^~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/vector:60,
                 from molecules.h:3,
                 from molecules.cpp:1:
/usr/include/c++/9/bits/stl_iterator.h:996:5: note: candidate: 'template<class _Iterator, class _Container> __gnu_cxx::__normal_iterator<_Iterator, _Container> __gnu_cxx::operator+(typename __gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)'
  996 |     operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:996:5: note:   template argument deduction/substitution failed:
molecules.cpp:18:15: note:   mismatched types 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>' and 'int'
   18 |     sort(I, I+n, [] (int x, int y)
      |               ^
molecules.cpp:18:5: error: 'sort' was not declared in this scope; did you mean 'short'?
   18 |     sort(I, I+n, [] (int x, int y)
      |     ^~~~
      |     short
molecules.cpp:37:18: error: invalid types 'int[__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type {aka int}]' for array subscript
   37 |     sum -= x[I[x]];
      |                  ^