错一个点求助
查看原帖
错一个点求助
1481728
CyanHalcyon楼主2025/7/1 19:31

求助,错最后一个点

//头文件

#define ll long long
#define rep(i, a, b) for (long long i = (a); i <= (b); ++i)
#define rrep(i, a, b) for (long long i = (a); i <= (b); --i)

bool cmp(int t1, int t2) {
  return t1 > t2;}

  int main() {
    ll n, k;
    cin >> n >> k;
    ll a[n + 3];
    ll odd[n + 3];
    ll ev[n + 3];
    ll* p   = odd;
    ll* q   = ev;
    ll num1 = 0;
    ll num0 = 0;
    memset(odd,0,sizeof(odd));
    memset(ev,0,sizeof(ev));
    rep(i, 1, n) {
      cin >> a[i];

      if (a[i] % 2 != 0) {
        *p = a[i];
        p++;
        num1++;
      }
      if (a[i] % 2 == 0) {
        *q = a[i];
        q++;
        num0++;
      }
    }

    if (num1 < k && num0 < k) {
      cout << "0" << endl;
      return 0;
    }
    
    sort(odd, odd + num1, cmp);
    sort(ev,ev+num0,cmp);
    ll o=0;
    ll e=0;
    rep(i,1,k)
    {o+=odd[i-1];
      e+=ev[i-1];
    }
    cout<<max(o,e)<<endl;

    return 0;
  }
2025/7/1 19:31
加载中...