rt,复杂度是 O(mk) 的做法居然得了 65 分,让我非常惊讶
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[2000010], maxn[2000010];
signed main()
{
int n, m, v, ans1 = 0, ans2 = 0;
cin >> n >> m >> v;
maxn[0] = -1e9;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
maxn[i] = max(maxn[i - 1] + v, a[i]);
}
while (m--)
{
int x, k, minn = 1e9;
cin >> x >> k;
int y = maxn[x - 1] + v;
for (int i = x + 1; i < x + k; i++) y = max(y, a[i] - (i - x) * v + 1);
if (x + k - 1 <= n) ans1 ^= y, ans2 += y;
}
cout << ans1 << " " << ans2 << endl;
return 0;
}