#include <bits/stdc++.h>
using namespace std;
const long long K = 1e9+7;
int main() {
int n,q;
cin >> n >> q;
vector<vector<int>> in(n, vector<int> (2));
for(int i = 0; i<n; i++){
cin >> in[i][0] >> in[i][1];
}
for(int i =0;i<q; i++){
vector<long long> dp(n);
int x,l,r;
cin >> x >> l >> r;
dp[l] = x;
for(int j = l; j<r; j++){
for(int k : {0,1}) {
if(k == 0) dp[j+1] = max(dp[j+1], dp[j]+in[j][k])%K;
if(k == 1) dp[j+1] = max(dp[j+1], dp[j]*in[j][k])%K;
}
}
cout << dp[r]<< "\n";
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #include <bits/stdc++.h> using namespace std; const long long K = 1e9+7; int main() { int n,q; cin >> n >> q; vector<vector<int>> in(n, vector<int> (2)); for(int i = 0; i<n; i++){ cin >> in[i][0] >> in[i][1]; } for(int i =0;i<q; i++){ vector<long long> dp(n); int x,l,r; cin >> x >> l >> r; dp[l] = x; for(int j = l; j<r; j++){ for(int k : {0,1}) { if(k == 0) dp[j+1] = max(dp[j+1], dp[j]+in[j][k])%K; if(k == 1) dp[j+1] = max(dp[j+1], dp[j]*in[j][k])%K; } } cout << dp[r]<< "\n"; } return 0; } |
English