fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. void solve(){
  6. ll n;
  7. cin>>n;
  8. ll timearray[n+10], waitarray[n+10];
  9. ll waitarray1[n+10];
  10.  
  11. for(int i=0;i<n+10;i++)
  12. timearray[i]=waitarray[i]=waitarray1[i]=0;
  13.  
  14. for(int i=1;i<n;i++)
  15. cin>>timearray[i];
  16. for(int i=2;i<=n-1;i++)
  17. cin>>waitarray[i];
  18.  
  19. for(int i=2;i<n;i++)
  20. timearray[i]+=timearray[i-1];
  21.  
  22. waitarray1[2]=waitarray[2];
  23.  
  24. for(int i=3;i<=n-1;i++)
  25. waitarray1[i]=waitarray1[i-1]+waitarray[i];;
  26.  
  27. ll q;
  28. cin>>q;
  29. while(q--){
  30. ll k, a, b;
  31. cin>>k>>a>>b;
  32. ll ans1=timearray[b-1]-timearray[a-1];
  33. if(k==0){
  34. ll ans2;
  35. if(a==b)
  36. ans2=0;
  37. else
  38. ans2=(waitarray1[b-1]-waitarray1[a]);
  39. cout<<ans1+ans2<<endl;
  40. }
  41. else if(k==1){
  42. ll Min=INT_MAX;
  43. ll ans2;
  44. if(a!=b){
  45. for(int i=a+1;i<b;i++)
  46. Min=min(Min,waitarray[i]);
  47. ans2=(b-a-1)*Min;
  48. }
  49. else
  50. ans2=0;
  51. cout<<ans1+ans2<<endl;
  52. }
  53. }
  54. }
  55.  
  56. int main(){
  57. ll t=1;
  58. cin>>t;
  59. while(t--){
  60. solve();
  61. }
  62. return 0;
  63. }
  64.  
  65.  
Success #stdin #stdout 0s 16056KB
stdin
1
6
20 30 40 50 60
2 3 4 5
4
0 2 5
1 2 5
0 6 1
1 6 1
stdout
127
126
-200
-12884902082