Day 17 B. Cobb

阅读: 评论:0

Day 17 B. Cobb

Day 17 B. Cobb

Problem:
You are given n integers a1,a2,…,an and an integer k. Find the maximum value of i⋅j−k⋅(ai | aj) over all pairs (i,j) of integers with 1≤i<j≤n.

Input
The first line contains a single integer t (1≤t≤10000) — the number of test cases.

The first line of each test case contains two integers n (2≤n≤10^5) and k (1≤k≤min(n,100)).

The second line of each test case contains n integers a1,a2,…,an (0≤ai≤n).

It is guaranteed that the sum of n over all test cases doesn’t exceed 3⋅10^5.

Output
For each test case, print a single integer — the maximum possible value of i⋅j−k⋅(ai | aj).

Example
input
4

3 3
1 1 3

2 2
1 2

4 3
0 1 2 3

6 6
3 2 0 0 5 6

output
-1
-4
3
12

Note
Let f(i,j)=i⋅j−k⋅(ai | aj).

In the first test case,

f(1,2)=1⋅2−k⋅(a1 | a2)=2−3⋅(1|1)=−1.
f(1,3)=1⋅3−k⋅(a1 | a3)=3−3⋅(1|3)=−6.
f(2,3)=2⋅3−k⋅(a2 | a3)=6−3⋅(1|3)=−3.
So the maximum is f(1,2)=−1.

In the fourth test case, the maximum is f(3,4)=12.

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string>
#include<set>
#include<vector>
#include<cmath>
#include<cstdio>
#define ll long long
using namespace std;
int t, n, k, a[100005];
int main()
{cin >> t;while (t--){cin >> n >> k;for (int i = 1; i <= n; i++){cin >> a[i];}ll ans = -1e9;for (int i = max(1, n - 105); i <= n; i++){for (int j = i + 1; j <= n; j++){ans = max(ans, ((ll)i) * j - (a[i] | a[j]) * k);}}cout << ans << endl;}return 0;
}

本文发布于:2024-02-04 10:38:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170705268254831.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Day   Cobb
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23