3638 - 向量积
有两个向量v1=(x1,x2...xn) v2=(y1,y2...yn),允许任意交换v1,v2各自的分量的顺序。请计算V1,V2向量积
(x1*y1+x2*y2......)的最小值
限制条件
1<=n<=400
-100000<=xi,yi<=100000
Input
先输入n.
接下来两行,第一行输入x1...xn,第二行输入y1...yn
Output
向量积的最小值
Examples
Input
3 1 3 -5 -2 4 1 5 1 2 3 4 5 1 0 1 0 1
Output
-25 6
Solution C++
#include <bits/stdc++.h> using namespace std; int main() { int n; //freopen("F:\\QQDownlaod\\Laputa\\2015.3.23\\1(2)\\test.in","r",stdin); while(~scanf("%d",&n)){ long long d[405],b[405]; for (int i=0;i<n;i++) scanf("%lld",&d[i]); for (int i=0;i<n;i++) scanf("%lld",&b[i]); sort(d,d+n); sort(b,b+n); long long sum=0; for (int i=0;i<n;i++){ sum+=(d[i]*b[n-1-i]); } printf("%lld\n",sum); } return 0; }