y总在视频中说这题简单,于是我尝试自己写了一下,居然直接AC了。。。QAQ
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 100010;
vector<LL> vec;
LL n;
LL res_n,res_s,s1,s2;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
LL x;
cin>>x;
vec.push_back(x);
}
sort(vec.begin(),vec.end()); //不用vector用数组也能用sort,而且不用写成迭代器的形式
if(n%2==0)
{
res_n=0;
for(int i=0;i<n/2;i++)
{
s1+=vec[i];
}
for(int i=n/2;i<n;i++)
{
s2+=vec[i];
}
res_s=s2-s1;
}
else
{
res_n=1;
for(int i=0;i<n/2;i++)
{
s1+=vec[i];
}
for(int i=n/2;i<n;i++)
{
s2+=vec[i];
}
res_s=s2-s1;
}
cout<<res_n<<" "<<res_s;
return 0;
}
讲解:S1的个数一定是小于等于S2的个数————贪心所在
y总的题目更短,也更精简,慢慢来吧哈哈哈。