0
已解决
汪恺恒
中级启示者
中级启示者
题目描述 Description
小强和小明两位小朋友在玩一个盲比多少的游戏, 游戏规则非常简单:每次手握一定数量的小弹珠出拳, 谁手中的小弹珠多,
谁就算赢,赢家不仅可以获得输家本次出拳的小弹珠,还可以得到50积分的奖励,输家则被扣除50分奖励;
如果弹珠数量一样, 则不计积分。经过若干次的出拳,最后赢家就可以得到一定的积分。假设最后赢家是小强,你可以通过安排出拳时手握弹珠数量,使小强获得最多积分。开始时两人积分都为0。
输入描述 Input Description
共3行,第一行一个正整数n (1≤n≤1000) ,表示总共出拳次数,第二行有n个由空格分隔的正整数,表示小强每次出拳时手握的弹珠数,第三行有n个由空格分隔的正整数,表示小明出拳时手握弹珠数。注意出拳时手握弹珠数不一定按照给出的顺序进行。
输出描述 Output Description
共1行一个整数,表示小强可获得的最大积分。
TLE60
#include<iostream>
#include<cmath>
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
int n,a[1005],b[1005],ans;
bool cmp(int x,int y){
return x>y;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+n,cmp);
int l1=1,l2=1,r1=n,r2=n;
while(l1<=r1&&l2<=r2){
if(a[l1]>b[l2]){
l1++;
l2++;
ans+=50;
}
else if(a[r1]>b[r2]){
r1--;
r2--;
ans+=50;
}
else if(a[r1]<b[l2]){
r1--;
l2++;
ans-=50;
}
}
cout<<ans;
return 0;
}
我也是无语了……
汪恺恒在2021-01-27 12:35:02追加了内容
@包涵宇
汪恺恒在2021-01-28 09:59:56追加了内容
@包涵宇 顶顶顶!