wangshi @ 2022-03-17 09:07:15
AC
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<array>
using namespace std;
int a[100010];
long long ans;
int main()
{
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++) cin>>a[i];
sort(a+1,a+m+1);
for(int i=1;i<=n;i++)
{
int s,s1;
cin>>s;
s1=lower_bound(a+1,a+m+1,s)-a;
if(s1==m+1) ans+=s-a[m];
else
if(s1==1)
ans+=a[1]-s;
else
ans+=min(abs(a[s1]-s),abs(s-a[s1-1]));
}
cout<<ans;
return 0;
}
60
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<array>
using namespace std;
array<int,100010> a;
long long ans;
int main()
{
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++) cin>>a[i];
sort(a.begin(),a.end());
for(int i=1;i<=n;i++)
{
int s,s1;
cin>>s;
s1=lower_bound(a.begin(),a.end(),s)-a.begin();
if(s1==m+1) ans+=s-a[m];
else
if(s1==1)
ans+=a[1]-s;
else
ans+=min(abs(a[s1]-s),abs(s-a[s1-1]));
}
cout<<ans;
return 0;
}
这个array和数组有什么区别
by naroanah @ 2022-03-17 09:10:27
array<T,N> 模板定义了一种相当于标准数组的容器类型。它是一个有 N 个 T 类型元素的固定序列。除了需要指定元素的类型和个数之外,它和常规数组没有太大的差别。显然,不能增加或删除元素。
by Loser_King @ 2022-03-17 09:11:16
你把 array 排序的时候使用了 sort(a.begin(),a.end())
,然后把后边的 0 也给排进去了。
试试把 a.begin(),a.end()
都换成 a.begin()+1,a.begin()+m
。
by wangshi @ 2022-03-17 09:17:56
@Loser_King 照您这么改就40了。。。
by Rubidium_Chloride @ 2022-03-17 09:38:05
为什么有人要用 array...?
by Loser_King @ 2022-03-17 09:41:35
@wangshi 突然发现我憨了
试试把 a.begin(),a.end()
都换成 a.begin()+1,a.begin()+m+1
。
by jijidawang @ 2022-03-17 09:42:43
@wangshi 改成
a.begin()+1,a.begin()+m+1
就过了 .
by wangshi @ 2022-03-17 09:54:32
@jijidawang @Loser_King 谢谢大佬