fork download
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5.  
  6. int n;
  7.  
  8. typedef long long int ll;
  9. ll bit[10009]={0};
  10.  
  11. ll query(int idx)
  12. {
  13. ll sum=0;
  14.  
  15. while(idx>=1)
  16. {
  17. sum+=bit[idx];
  18. idx-= (idx&(-idx));
  19. }
  20.  
  21. return sum;
  22. }
  23.  
  24. void update(int idx, int val)
  25. {
  26. while(idx<=n)
  27. {
  28. bit[idx]+=val;
  29. idx= idx+ (idx&(-idx));
  30. }
  31. }
  32.  
  33. void range_update(int low, int high, int val)
  34. {
  35. update(low,val);
  36. update(high+1,-val);
  37. }
  38.  
  39. int main()
  40. {
  41. int test,u;
  42. cin>>test;
  43. while(test--){
  44. memset(bit,0,10009* sizeof(ll));
  45. scanf("%d %d",&n,&u);
  46. int i,q;
  47. int l,r,val;
  48.  
  49. for(i=0;i<u;i++)
  50. {
  51. scanf("%d %d %d",&l,&r,&val);
  52. range_update(l+1,r+1,val);
  53.  
  54. }
  55.  
  56. scanf("%d",&q);
  57.  
  58. while(q--)
  59. {
  60. scanf("%d",&i);
  61. printf("%lld\n",query(i+1));
  62. }
  63. }
  64. return 0;
  65. }
Success #stdin #stdout 0s 3176KB
stdin
1
5 3
0 1 7
2 4 6
1 3 2
3
0
3
4
stdout
7
8
6