Language: C++

    #include<iostream>
    #include<stdio.h>
    //#include <bits/stdc++.h>
    #include<vector>
    #include<float.h>
    #include<iomanip>
    #include<algorithm>
    #include<string>
    #include<cstring>
    #include<math.h>
    #include<cmath>
    #include<sstream>
    #include<set>
    #include<map>
    #include<queue>
    #include<cassert>
    #include<cmath>
    #include<cstdint>
     
    #define INF 1e9
    #define rep(i,n)for(int i=0;(i)<(int)(n);i++)
    #define REP(i,a,b)for(int i=(int)(a);(i)<=(int)(b);i++)
    #define VEC(type, c, n) std::vector<type> c(n);for(auto& i:c)std::cin>>i;
    #define vec(type,n) vector<type>(n)
    #define vvec(m,n) vector<vector<int>> (int(m),vector<int>(n))
    #define ALL(a)  (a).begin(),(a).end()
     
    using namespace std;
    using ll = long long;
    using Graph = vector<vector<int>>;
    using P = pair<ll, ll>;
     
//const ll MOD = INF + 7;
//Combination MOD
const int MOD = 1e9 + 7;

//bit全探索
vector<int>bitSearch(int bit,int n){
    vector<int>S;
    rep(i,n)if(bit&(1<<i))S.push_back(i);
    S.push_back(1e9);
    return S;
}

int main(){
   int n, k;
   cin >> n >> k;
   int zr = 0;
   vector<ll> a(n), mn, pl;
   rep(i, n){
      cin >> a[i];
      if(a[i] < 0)mn.push_back(a[i]);
      else pl.push_back(a[i]);
   }
   sort(ALL(mn));
   sort(ALL(pl), greater<ll>());
   
   vector<ll> res;
   int ms = mn.size(), ps = pl.size();

   if(n == k){
      ll r = 1;
      rep(i, ps){
         r = (r * pl[i]) % MOD;
         if(r < 0)r += MOD;
      }
      rep(i, ms){
         r = (r * mn[i]) % MOD;
         if(r < 0)r += MOD;
      }
      if(r < 0)r += MOD;
      cout << r << endl;
      return 0;
   }
   //答えがmnになるとき
   if(ps == 0 && k % 2 == 1){
      ll r = 1;
      reverse(ALL(mn));
      rep(i, k){
         r = r * mn[i];
         r %= MOD;
         if(r < 0)r += MOD;
         r %= MOD;
      }
      if(r < MOD)r += MOD;
      r %= MOD;
      cout << r << endl;
      return 0;
   }

   if(ps == 0 && k % 2 == 0){
      ll r = 1;
      //reverse(ALL(mn));
      rep(i, k){
         r = r * mn[i];
         r %= MOD;
         if(r < 0)r += MOD;
         r %= MOD;
      }
      if(r < MOD)r += MOD;
      r %= MOD;
      cout << r << endl;
      return 0;
   }

   //絶対pls
   //mnの累積積

   vector<ll> abso(n);
   rep(i, n){
      abso[i] = abs(a[i]);
   }
   sort(ALL(abso), greater<ll>());
   ll res = 1;
   rep(i, k){
      res = (res * abso[i]) % MOD;
      if(res < 0)res += MOD;
   }
   if(res < 0)res += MOD;
   cout << res << endl;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:114:7: error: conflicting declaration 'll res'
  114 |    ll res = 1;
      |       ^~~
a.cc:58:15: note: previous declaration as 'std::vector<long long int> res'
   58 |    vector<ll> res;
      |               ^~~
a.cc:116:18: error: no match for 'operator*' (operand types are 'std::vector<long long int>' and '__gnu_cxx::__alloc_traits<std::allocator<long long int>, long long int>::value_type' {aka 'long long int'})
  116 |       res = (res * abso[i]) % MOD;
a.cc:117:14: error: no match for 'operator<' (operand types are 'std::vector<long long int>' and 'int')
  117 |       if(res < 0)res += MOD;
      |          ~~~ ^ ~
      |          |     |
      |          |     int
      |          std::vector<long long int>
In file included from /usr/include/c++/14/string:48,
                 from /usr/include/c++/14/bits/locale_classes.h:40,
                 from /usr/include/c++/14/bits/ios_base.h:41,
                 from /usr/include/c++/14/ios:44,
                 from /usr/include/c++/14/ostream:40,
                 from /usr/include/c++/14/iostream:41,
                 from a.cc:1:
/usr/include/c++/14/bits/stl_iterator.h:448:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<(const reverse_iterator<_Iterator>&, const reverse_iterator<_Iterator>&)'
  448 |     operator<(const reverse_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:448:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::reverse_iterator<_Iterator>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/stl_iterator.h:493:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<(const reverse_iterator<_Iterator>&, const reverse_iterator<_IteratorR>&)'
  493 |     operator<(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:493:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::reverse_iterator<_Iterator>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/stl_iterator.h:1694:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr bool std::operator<(const move_iterator<_IteratorL>&, const move_iterator<_IteratorR>&)'
 1694 |     operator<(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1694:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::move_iterator<_IteratorL>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/stl_iterator.h:1760:5: note: candidate: 'template<class _Iterator> constexpr bool std::operator<(const move_iterator<_IteratorL>&, const move_iterator<_IteratorL>&)'
 1760 |     operator<(const move_iterator<_Iterator>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_iterator.h:1760:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::move_iterator<_IteratorL>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/bits/stl_algobase.h:64,
                 from /usr/include/c++/14/string:51:
/usr/include/c++/14/bits/stl_pair.h:1045:5: note: candidate: 'template<class _T1, class _T2> constexpr bool std::operator<(const pair<_T1, _T2>&, const pair<_T1, _T2>&)'
 1045 |     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_pair.h:1045:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::pair<_T1, _T2>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/bits/basic_string.h:47,
                 from /usr/include/c++/14/string:54:
/usr/include/c++/14/string_view:673:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<(basic_string_view<_CharT, _Traits>, basic_string_view<_CharT, _Traits>)'
  673 |     operator< (basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:673:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/string_view:680:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<(basic_string_view<_CharT, _Traits>, __type_identity_t<basic_string_view<_CharT, _Traits> >)'
  680 |     operator< (basic_string_view<_CharT, _Traits> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:680:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'std::basic_string_view<_CharT, _Traits>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/string_view:688:5: note: candidate: 'template<class _CharT, class _Traits> constexpr bool std::operator<(__type_identity_t<basic_string_view<_CharT, _Traits> >, basic_string_view<_CharT, _Traits>)'
  688 |     operator< (__type_identity_t<basic_string_view<_CharT, _Traits>> __x,
      |     ^~~~~~~~
/usr/include/c++/14/string_view:688:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   mismatched types 'std::basic_string_view<_CharT, _Traits>' and 'int'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/basic_string.h:3874:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3874 |     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3874:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/basic_string.h:3888:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const __cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)'
 3888 |     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3888:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>'
  117 |       if(res < 0)res += MOD;
      |                ^
/usr/include/c++/14/bits/basic_string.h:3901:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> bool std::operator<(const _CharT*, const __cxx11::basic_string<_CharT, _Traits, _Allocator>&)'
 3901 |     operator<(const _CharT* __lhs,
      |     ^~~~~~~~
/usr/include/c++/14/bits/basic_string.h:3901:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   mismatched types 'const _CharT*' and 'std::vector<long long int>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/bits/memory_resource.h:47,
                 from /usr/include/c++/14/string:68:
/usr/include/c++/14/tuple:2600:5: note: candidate: 'template<class ... _TElements, class ... _UElements> constexpr bool std::operator<(const tuple<_UTypes ...>&, const tuple<_Elements ...>&)'
 2600 |     operator<(const tuple<_TElements...>& __t,
      |     ^~~~~~~~
/usr/include/c++/14/tuple:2600:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::tuple<_UTypes ...>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:4:
/usr/include/c++/14/bits/stl_vector.h:2089:5: note: candidate: 'template<class _Tp, class _Alloc> bool std::operator<(const vector<_Tp, _Alloc>&, const vector<_Tp, _Alloc>&)'
 2089 |     operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:2089:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   mismatched types 'const std::vector<_Tp, _Alloc>' and 'int'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/set:63,
                 from a.cc:13:
/usr/include/c++/14/bits/stl_set.h:1025:5: note: candidate: 'template<class _Key, class _Compare, class _Alloc> bool std::operator<(const set<_Key, _Compare, _Allocator>&, const set<_Key, _Compare, _Allocator>&)'
 1025 |     operator<(const set<_Key, _Compare, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_set.h:1025:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::set<_Key, _Compare, _Allocator>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/set:64:
/usr/include/c++/14/bits/stl_multiset.h:1011:5: note: candidate: 'template<class _Key, class _Compare, class _Alloc> bool std::operator<(const multiset<_Key, _Compare, _Allocator>&, const multiset<_Key, _Compare, _Allocator>&)'
 1011 |     operator<(const multiset<_Key, _Compare, _Alloc>& __x,
      |     ^~~~~~~~
/usr/include/c++/14/bits/stl_multiset.h:1011:5: note:   template argument deduction/substitution failed:
a.cc:117:16: note:   'std::vector<long long int>' is not derived from 'const std::multiset<_Key, _Compare, _Allocator>'
  117 |       if(res < 0)res += MOD;
      |                ^
In file included from /usr/include/c++/14/map:6