Language: C++

#include <iostream>
#include<vector>
#include <map>
#include<algorithm>
#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;
multimap<ll,int>::iterator it;
multimap<ll,int>::reverse_iterator rit;
int inverse(int a,int m)
{
    int m1=m,t,q;
    int x0=0,x1=1;

    if (m==1)
      return 0;

    while(a>1)
    {
        q=a/m;
        t=m;
        m=a%m, a=t;
        t=x0;
        x0=x1-q*x0;
        x1=t;
    }
    if (x1<0)
       x1+=m1;

    return x1;
}

int main()
{
        int n,k;
        cin>>n>>k;

       
        if(n==k) {
            ll ans=1;
            while(n--) {
                ll mk;
                cin>>mk;
                ans=((ans%MOD)*(mk%MOD))%MOD;
            }
            if(ans<0)
                ans+=MOD;
            cout<<ans<<endl;
            continue;
        }

        multimap<ll,int> mp;
        bool allneg=true;
        for(int i=0;i<n;i++) {
            ll val;
            cin>>val;
            if(val>=0) {
                allneg=false;
               mp.insert(pair<ll,int>(val,1));
            }else {
                mp.insert(pair<ll,int>(-val,-1));
            }

        }
       if(allneg) {
                long long ans=1;
                long long c=0;
            if(k%2) {
              
                 for(it=mp.begin();it!=mp.end();it++) {
                ll val=it->first;
                ans=((ans%MOD)*(val%MOD))%MOD;
                c++;
                if(c==k)
                 break;
            }
            ans=(-ans)%MOD;
            if(ans<0)
                ans+=MOD;
            cout<<ans<<endl;
            continue;
            }else {
            
                 for(rit=mp.rbegin();rit!=mp.rend();rit++) {
                ll val=rit->first;
                ans=((ans%MOD)*(val%MOD))%MOD;
                c++;
                if(c==k)
                 break;
            }
            if(ans<0)
                ans+=MOD;
            cout<<ans<<endl;
            continue;
            }

    }

        int cn=0;
        map<ll,int>::reverse_iterator rit2;
        long long prod=1,preneg,prepos;
        preneg=1;
        prepos=-1;
        int negcn=0;
        for(rit=mp.rbegin();rit!=mp.rend();rit++) {
          int key=rit->first;
          int val=rit->second;
          if(val==-1) {
            preneg=key;
            negcn++;
          }else if(val==1) {
              prepos=key;
          }
          prod=((prod%MOD)*(key%MOD))%MOD;
          cn++;

       

          if(cn==k) {
            rit2=rit;
            break;
          }
    }

  
       if(negcn%2) {
        rit2++;
        bool flagpos,flagneg;
        flagpos=flagneg=false;
        long long posf,negf;
        posf=-1;
        negf=1;
         for(rit=rit2;rit!=mp.rend();rit++) {
            int key=rit->first;
            int val=rit->second;
            if(!flagpos&&val==1) {
                
                posf=key;
                flagpos=true;
            }else if(!flagneg&&val==-1) {
                
                negf=key;
                flagneg=true;
            }

            if(flagpos&&flagneg)
                break;
         }
         if(prepos==-1) {
            
               prod=((prod%MOD)*(inverse(preneg,MOD)%MOD))%MOD;
               prod=((prod%MOD)*(posf%MOD))%MOD;
        }else if(flagpos&&flagneg) {
          
            long long val1;
            val1=preneg*negf;
            long long val2;
            val2=prepos*posf;
            if(val1>val2) {
                prod=((prod%MOD)*(inverse(prepos,MOD)%MOD))%MOD;
                prod=((prod%MOD)*(negf%MOD))%MOD;
            }else {
                prod=((prod%MOD)*(inverse(preneg,MOD)%MOD))%MOD;
                prod=((prod%MOD)*(posf%MOD))%MOD;
            }

         }else if(!flagpos&&flagneg) {
            prod=((prod%MOD)*(inverse(prepos,MOD)%MOD))%MOD;
            prod=((prod%MOD)*(negf%MOD))%MOD;
         }else if(flagpos&&!flagneg) {
           prod=((prod%MOD)*(inverse(preneg,MOD)%MOD))%MOD;
           prod=((prod%MOD)*(posf%MOD))%MOD;
         }
       }
        if(prod<0)
            prod+=MOD;
       cout<<prod<<endl;


    return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:50:13: error: continue statement not within a loop
   50 |             continue;
      |             ^~~~~~~~
a.cc:82:13: error: continue statement not within a loop
   82 |             continue;
      |             ^~~~~~~~
a.cc:95:13: error: continue statement not within a loop
   95 |             continue;
      |             ^~~~~~~~