没使用map,拿二分写的只有8分,不知道为什么?
  • 板块P1102 A-B 数对
  • 楼主Suboil
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/3 23:44
  • 上次更新2023/11/3 11:42:17
查看原帖
没使用map,拿二分写的只有8分,不知道为什么?
1026350
Suboil楼主2023/7/3 23:44
#include <bits/stdc++.h>
using namespace std;

int n,c;
long long ans[200010];
int search1(int target){
    int l = 1,r = n;
    int cnt = 0;
    while(l <= r) {
        int mid = (l + r) >> 1;

        if(ans[mid] == target) cnt++;

        if(ans[mid] >= target) {
            r = mid - 1;
        }else if(ans[mid] < target) {
            l = mid + 1;
        }
    }

    return cnt;
}

int search2(int target){
    int l = 1,r = n;
    int cnt = 0;
    while(l <= r) {
        int mid = (l + r) >> 1;

        if(ans[mid] == target) cnt++;

        if(ans[mid] > target) {
            r = mid - 1;
        }else if(ans[mid] <= target) {
            l = mid + 1;
        }
    }

    return cnt;
}


int main(){
    cin >> n >> c;

    for(int i = 1;i <= n;i++) cin >> ans[i];

    sort(ans,ans + n);


    int res = 0;
    for(int i = 1;i <= n;i++) {
        res += max(search1(ans[i] - c),search2(ans[i] - c));
    }


    cout << res << endl;

    
}
2023/7/3 23:44
加载中...