思路
对于选取的下标区间l <=x <=r;如果 Σsubarray[x]>0,就选取这个区间,否则不选
#include<bits/stdc++.h>
using namespace std;
int a[105];
vector<int> b[105];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++){
int l,r;
cin>>l>>r;
b[i].push_back(l);
b[i].push_back(r);
}
vector<int> spe;
for(int i=1;i<=m;i++){
int sum=0;
for(int j=*(b[i].begin());j<=*(++b[i].begin());j++){
sum+=a[j];
}
if(sum>0){
spe.push_back(i);
}
}
int sum=0;
for(int i=1;i<=n;i++){
int cnt=0;
for(auto j=spe.begin();j!=spe.end();j++){
if(i>=*(b[*j].begin()) && i<=*(++b[*j].begin()) ){
cnt++;
}
}
sum += cnt*a[i];
}
printf("%d\n",sum);
}