Advertisement
LZsolar

SMMR-125: Infinite Array

Jul 4th, 2020
1,663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.56 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. const int N = 100010;
  5.  
  6. ll L[N], R[N], X[N];
  7. ll qs[2*N],qs2[2*N];
  8.  
  9. int main()
  10. {
  11.     ll n, m;
  12.     scanf("%lld %lld", &n, &m);
  13.  
  14.     vector<ll> coord;
  15.     coord.push_back(0);
  16.     for (ll i = 1; i <= n; ++i) {
  17.         scanf("%lld %lld %lld", &L[i], &R[i], &X[i]);
  18.         coord.push_back(L[i]);
  19.         coord.push_back(R[i]+1);
  20.     }
  21.     sort(coord.begin(), coord.end());
  22.     coord.resize(unique(coord.begin(), coord.end())-coord.begin());
  23.  
  24.     for (ll i = 1; i <= n; ++i) {
  25.         ll l = L[i], r = R[i], x = X[i];
  26.         ll a = lower_bound(coord.begin(), coord.end(), l) - coord.begin();
  27.         ll b = lower_bound(coord.begin(), coord.end(), r+1) - coord.begin();
  28.         qs[a] += x;
  29.         qs[b] -= x;
  30.     }
  31.     for (ll i = 1; i < coord.size(); ++i)
  32.         qs[i] += qs[i-1];
  33.    
  34.    
  35.     for(ll i=1;i<coord.size();i++){
  36.         ll x = coord[i]-coord[i-1]-1; //printf("%d ",x);
  37.         qs2[i]= (x*qs[i-1])+qs2[i-1] +qs[i];
  38.     }//printf("\n");
  39. /*for (int i = 0; i < coord.size(); ++i)
  40.     printf("%d| %d\n",coord[i],qs2[i]);*/
  41.     while (m--) {
  42.         ll l, r;
  43.         scanf("%lld %lld", &l, &r);
  44.  
  45.         ll a = upper_bound(coord.begin(), coord.end(), l)-1 - coord.begin();
  46.         ll b = upper_bound(coord.begin(), coord.end(), r)-1 - coord.begin();
  47. //printf("[%d %d]",coord[a],coord[b]);
  48.         ll s1= qs2[a]+ ((l-coord[a])*qs[a]);
  49.         ll s2= qs2[b]+ ((r-coord[b])*qs[b]);
  50. //printf("[%d %d]",s1,s2);
  51.         printf("%lld\n",s2-s1+qs[a]);
  52.     }
  53.    
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement