求助P1678
/*
知识点
1.贪心算法
思路
1.
2.
用例
1:输入:
输出:
2
2:输入:
()))))))
输出:
3
3:输入:
())))))))(
输出:
5
4:输入:
(()())
输出:
0
5:输入:
输出:
核心代码
1.
2.
*/
#include <bits/stdc++.h>
using namespace std;
/*int binary_search(priority_queue<int>* arr,int temp,int a,int b)
{
int l=a,r=b;
int mid;
while(l>r)
{
mid=(l+r)/2;
if(arr[mid]>temp)
{
l=mid+1;
}
else if(arr[mid]<temp)
{
r=mid-1;
}
}
return mid;
}
c++有自带的二分库函数lower_bound(),upper_bound()
*/
int main()
{
int m,n;
cin>>m>>n;
int x[m];
int y[n];
for(int i=0;i<m;i++)
{
cin>>x[i];
}
for(int i=0;i<n;i++)
{
cin>>y[i];
}
sort(x,x+m);
int minn;
long long int ans=0;
int s;
for(int i=0;i<n;i++)
{
s=y[i];
if(s>=x[n-1])
{
ans+=s-x[n-1];
}
else if(s<=x[0])
{
ans+=x[0]-s;
}
else
{
minn=min(abs(s-*lower_bound(x,x+m,s)),abs(*upper_bound(x,x+m,s)-s));
ans+=minn;
}
}
cout<<ans;
return 0;
}
/*
耗时:0天0小时22分钟28秒50毫秒
测试次数:5次
提交次数:1=>0分,2=>100分
评分:100分
时间复杂度:O()
空间复杂度:O(1)
类型:
大改:1次
小改:8次
*/
服了,样例过了,测评全WA和两个RE