NC52149. Card
描述
输入描述
第一行数字表示纸牌数量
接下来一行个数字,代表你的好朋友的出牌顺序
接下来一行个数字,代表你拥有的牌
输出描述
一行一个数字表示最大可能得分
示例1
输入:
5 1 7 9 5 3 10 4 2 6 8
输出:
15
说明:
一种可行的出牌顺序为C++11(clang++ 3.9) 解法, 执行用时: 173ms, 内存消耗: 3008K, 提交时间: 2019-12-25 15:03:30
#include<bits/stdc++.h> using namespace std; int main() { int a[100010],b[100010]; long long ans=0; int n,i; cin >> n; for(i=0;i<n;i++) cin >> a[i]; for(i=0;i<n;i++) cin >> b[i]; sort(a,a+n); sort(b,b+n); for(i=0;i<n;i++) { ans += max(0,-a[i]+b[n-i-1]); } cout << ans << endl; return 0; }
C++14(g++5.4) 解法, 执行用时: 135ms, 内存消耗: 3064K, 提交时间: 2019-12-20 22:27:14
#include<bits/stdc++.h> using namespace std; int a[111111],b[111111]; int main(){ int n,i; cin>>n; long long res=0; for(i=0;i<n;i++)cin>>a[i]; for(i=0;i<n;i++)cin>>b[i]; sort(a,a+n); sort(b,b+n); for(i=0;i<n;i++){ if(b[n-i-1]>a[i])res+=b[n-i-1]-a[i]; } cout<<res; }
pypy3(pypy3.6.1) 解法, 执行用时: 314ms, 内存消耗: 35812K, 提交时间: 2019-12-21 10:51:26
n=int(input()) a=list(map(int,input().split(' '))) b=list(map(int,input().split(' '))) a=sorted(a) b=sorted(b) ans = 0 for i in range(n): if b[n-1-i]-a[i]>0: ans += b[n-1-i]-a[i] print(ans)
Python3(3.5.2) 解法, 执行用时: 269ms, 内存消耗: 18820K, 提交时间: 2019-12-20 19:37:01
n=int(input()) ans=0 a=list(map(int,input().split())) b=list(map(int,input().split())) a.sort() b.sort(reverse=True) for i in range(n): ans+=max(b[i]-a[i],0) print(ans)