1 条题解
-
0
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { int N; cin >> N; vector<ll> A(N), B(N); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < N; i++) cin >> B[i]; // 计算差分 vector<ll> diff(N); ll pos = 0, neg = 0; for (int i = 0; i < N; i++) { diff[i] = B[i] - A[i]; if (diff[i] > 0) pos += diff[i]; else neg += -diff[i]; } // 如果正负增量不相等,无法通过增减完成 if (pos != neg) { cout << -1 << endl; return 0; } // 检查每个位置是否会降到负数 ll cur = 0; // 当前累计的操作影响 for (int i = 0; i < N; i++) { cur += diff[i]; // 累计到这个位置的操作影响 if (A[i] + cur < 0) { // 操作过程中可能降到负数 cout << -1 << endl; return 0; } } cout << pos << endl; return 0; }
信息
- ID
- 2612
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 3
- 已通过
- 0
- 上传者