这是70分的
#include<bits/stdc++.h>
using namespace std;
#define int long long
int op[1145140],oy[1145140];
int venti[1145140];
stack<int> a;
int n;
signed main(){
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op[i]>>oy[i];
}
for(int i=n;i>=1;i--){
while(!a.empty()&&op[a.top()]<op[i]){
venti[i]+=oy[a.top()];
a.pop();
}
if(a.empty()){
venti[i]=0;
}
else{
venti[a.top()]+=oy[i];
}
a.push(i);
}
int y=-1e9;
for(int i=1;i<=n;i++){
y=max(y,venti[i]);
}
cout<<y;
return 0;
return 0;
}
这是按照题解修改之后的AC代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
int op[1145140],oy[1145140];
int venti[1145140];
stack<int> a;
int n;
signed main(){
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>op[i]>>oy[i];
}
for(int i=n;i>=1;i--){
while(!a.empty()&&op[a.top()]<op[i]){
venti[i]+=oy[a.top()];
a.pop();
}
if(!a.empty()){
venti[a.top()]+=oy[i];
}
a.push(i);
}
int y=-1e9;
for(int i=1;i<=n;i++){
y=max(y,venti[i]);
}
cout<<y;
return 0;
return 0;
}
个人认为这并没有什么区别啊,求大佬解答