fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MOD = 1000000007;
  4.  
  5.  
  6. long long tru(long long a, long long b) {
  7. return ((a - b) % MOD + MOD) % MOD;
  8. }
  9.  
  10. int main() {
  11. ios::sync_with_stdio(false);
  12. cin.tie(nullptr);
  13.  
  14. int n, q;
  15. cin >> n >> q;
  16.  
  17. vector<long long> cp(n+1, 0LL);
  18. vector<long long> lastP(n+1, 0LL);
  19. vector<long long> money(n+1, 0LL);
  20.  
  21. long long P = 0;
  22.  
  23. while (q--) {
  24. int type;
  25. cin >> type;
  26. if (type == 1) {
  27. int p;
  28. long long x;
  29. cin >> p >> x;
  30. money[p] = (money[p] + ((cp[p] % MOD) * tru(P, lastP[p])) % MOD) % MOD;
  31. lastP[p] = P;
  32. cp[p] += x;
  33. }
  34. else if (type == 2) {
  35. long long v;
  36. cin >> v;
  37. P = (P + (v % MOD) + MOD) % MOD;
  38. }
  39. else {
  40. int p;
  41. cin >> p;
  42. money[p] = (money[p] + ((cp[p] % MOD) * tru(P, lastP[p])) % MOD) % MOD;
  43. lastP[p] = P;
  44. cout << (money[p] % MOD) << "\n";
  45. money[p] = 0;
  46. }
  47. }
  48.  
  49. return 0;
  50. }
  51.  
  52.  
  53.  
Success #stdin #stdout 0.01s 5284KB
stdin
3 8
1 1 5
2 3
1 2 10
2 2
3 1
2 4
3 2
3 1
stdout
25
60
20