QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#669688#8034. Ban or Pick, What's the TrickPoorGhostWA 1ms7712kbC++201.6kb2024-10-23 19:23:192024-10-23 19:23:20

Judging History

This is the latest submission verdict.

  • [2024-10-23 19:23:20]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 7712kb
  • [2024-10-23 19:23:19]
  • Submitted

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'