しろは的军训列队

代码

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long LL;

const int N = 1e6;
int n , a[N + 5] , b[N + 5];
struct node{
    int a , b;
}c[N + 5];
LL val , ans , k1 , k2;

inline bool cmp(node x , node y) { return x.a < y.a; }

int main()
{
    scanf("%d" , &n);
    for(register int i = 1; i <= n; i++) scanf("%d" , &c[i].a);
    for(register int i = 1; i <= n; i++) scanf("%d" , &c[i].b);
    sort(c + 1 , c + n + 1 , cmp);
    for(register int i = 2; i <= n; i++) val += 1LL * (c[i].a - c[1].a) * c[i].b , k1 += 1LL * c[i].b;
    k2 = c[1].b , ans = val;
    for(register int i = 2; i <= n; i++)
    {
        val -= 1LL * k1 * (c[i].a - c[i - 1].a);
        val += 1LL * k2 * (c[i].a - c[i - 1].a);
        k1 -= c[i].b , k2 += c[i].b;
        ans = min(ans , val); 
    }
    printf("%lld" , ans);
}

猜你喜欢

转载自www.cnblogs.com/leiyuanze/p/12346537.html