QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#669688 | #8034. Ban or Pick, What's the Trick | PoorGhost | WA | 1ms | 7712kb | C++20 | 1.6kb | 2024-10-23 19:23:19 | 2024-10-23 19:23:20 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define F(i,l,r) for(int i=l;i<=r;i++)
#define R(i,l,r) for(int i=r;i>=l;i--)
const int N = 2e5 + 20;
int n,k;
int a[N],b[N],sum1[N],sum2[N];
bool cmp(int x,int y){
return x>y;
}
void solve()
{
cin>>n>>k;
F(i,1,n) cin>>a[i];
F(i,1,n) cin>>b[i];
sort(a+1,a+1+n,cmp); sort(b+1,b+1+n,cmp);
F(i,1,n){
sum1[i]=sum1[i-1]+a[i];
sum2[i]=sum2[i-1]+b[i];
}
F(i,n+1,n+100) sum1[i]=sum1[n],sum2[i]=sum2[n];
int num1=k,num2=k;//还需要获得的数的个数
int ans1=0,ans2=0;
int id1=1,id2=1;//目前两个的开头
F(i,1,n*2){
int shan1=sum1[id1+num1-1]-sum1[id1-1]-sum1[id1+num1]+sum1[id1];//被删的代价
int shan2=sum2[id2+num2-1]-sum2[id2-1]-sum2[id2+num2]+sum2[id2];//第二个被删的代价
//cout<<shan1<<" "<<shan2<<"***"<<id1<<" "<<id2<<"///"<<ans1<<" "<<ans2<<endl;
if(i%2){
if(shan1>shan2&&num1&&id1<=n) {
ans1+=a[id1];
id1++;
num1--;
}
else if(shan1==shan2&&a[id1]>b[id2]&&num1&&id1<=n){
num1--;
ans1+=a[id1];
id1++;
}
else{
id2++;
}
}
else{
if(shan1<shan2&&num2&&id2<=n) {
ans2+=b[id2];
id2++;
num2--;
}
else if(shan1==shan2&&a[id1]<=b[id2]&&num2&&id2<=n){
num2--;
ans2+=b[id2];
id2++;
}
else{
id1++;
}
}
// cout<<ans1<<" "<<ans2<<" "<<i<<" "<<id1<<" "<<id2<<endl;
}
cout<<ans1-ans2<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int test = 1;
// cin >> test;
for (int i = 1; i <= test; i++)
{
solve();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5612kb
input:
2 1 3 6 2 4
output:
2
result:
ok single line: '2'
Test #2:
score: 0
Accepted
time: 1ms
memory: 5672kb
input:
4 1 1 3 5 7 2 4 6 8
output:
0
result:
ok single line: '0'
Test #3:
score: 0
Accepted
time: 1ms
memory: 5620kb
input:
4 2 4 6 7 9 2 5 8 10
output:
3
result:
ok single line: '3'
Test #4:
score: -100
Wrong Answer
time: 1ms
memory: 7712kb
input:
10 5 42 13 60 42 100 82 22 98 14 55 100 41 89 24 65 38 69 26 37 16
output:
37
result:
wrong answer 1st lines differ - expected: '41', found: '37'