社区讨论
求助40分!!!
P1001A+B Problem参与者 5已保存回复 12
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @lztkjmc1
- 此快照首次捕获于
- 2024/08/14 16:07 2 年前
- 此快照最后确认于
- 2024/08/14 16:19 2 年前
代码如下:
CPP#include<bits/stdc++.h>
using namespace std;
int m , n , a[200001] , l1 , s , r1 , maxx = 0 , ans;
priority_queue<int> que;
int fen(int l , int r){
if(l == r) return a[l];
m = (l + r) / 2;
s = a[m] , l1 = a[m] , r1 = a[m + 1];
for(int i = m - 1; i >= l; i--){
s += a[i];
l1 = max(l1 , s);
}
int s1 = a[m + 1];
for(int i = m + 2; i <= r; i++){
s1 += a[i];
r1 = max(r1 , s1);
}
return max(max(fen(l , m) , fen(m + 1 , r)) , l1 + r1);
}
bool check(int k){
for(int i = 1; i <= n; i++){
que.push(a[i]);
}
while(!que.empty()){
k -= que.top();
que.pop();
}
if(k){
return true;
} else {
return false;
}
}
int f(int n){
if(n == 1) return a[1];
return a[n] + f(n - 1);
}
int main(){
int n = 2 , ans;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
ans = fen(1 , n);
if(check(ans)){
if(f(n) == ans){
cout << ans;
} else {
cout << "Wrong!";
}
} else {
cout << "Wrong!";
}
return 0;
}
回复
共 12 条回复,欢迎继续交流。
正在加载回复...