I SOLVED PROBLEM C IN TODAY"S DIV.2 :((((
WHY MY RATING IS STILL SAME WHILE FOR EVERYONE ELSE THERE IS A DELTA>0
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3839 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3612 |
7 | Geothermal | 3569 |
7 | cnnfls_csy | 3569 |
9 | ecnerwala | 3494 |
10 | Um_nik | 3396 |
# | User | Contrib. |
---|---|---|
1 | Um_nik | 164 |
2 | maomao90 | 160 |
3 | -is-this-fft- | 159 |
4 | atcoder_official | 158 |
4 | awoo | 158 |
4 | cry | 158 |
7 | adamant | 155 |
8 | nor | 154 |
9 | TheScrasse | 151 |
9 | maroonrk | 151 |
I SOLVED PROBLEM C IN TODAY"S DIV.2 :((((
WHY MY RATING IS STILL SAME WHILE FOR EVERYONE ELSE THERE IS A DELTA>0
Help me solve this problem please ->
**** **** There is an array of n elements, initially filled with zeros. You need to write a data structure that processes two types of queries: assign value v to all elements on the segment from l to r−1, find the sum on the segment from l to r−1.
Input
The first line contains two numbers n and m (1≤n, m≤100000), the size of the array and the number of operations. The following lines contain the description of the operations. The description of each operation is as follows: 1 l r v: assign value v to all elements on the segment from l to r−1 (0≤l<r≤n, 0≤v≤109). 2 l r: find the sum on the segment from l to r−1 (0≤l<r≤n).
Output
For each operation of the second type, print the corresponding value.
There is an array of n elements, initially filled with zeros. You need to write a data structure that processes two types of queries:
add v to the segment from l to r-1, find the sum on the segment from l to r−1.
Input The first line contains two numbers n and m (1≤n,m≤100000), the size of the array and the number of operations. The following lines contain the description of the operations. The description of each operation is as follows:
1 l r v: add v to the segment from l to r−1 (0≤l<r≤n, 0≤v≤105). 2 l r: find the sum on the segment from l to r−1 (0≤l<r≤n).
Output For each operation of the second type, print the corresponding value.
My Code:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int MOD=1e9+7;
const int N = 1e5;
ll seg_tree[4*N];
ll lazy[4*N];
void push(int l, int r, int node){
if(l!=r&&lazy[node]!=0){
int m = l + (r-l)/2;
seg_tree[2*node]+=(m-l+1)*lazy[node];
seg_tree[2*node+1]+=(r-m)*lazy[node];
lazy[2*node+1]+=lazy[node];
lazy[2*node]+=lazy[node];
lazy[node]=0;
}
}
void update(int l, int r, int i, int j, int val, int node){
if(i>r||j<l) return; // OR l>r
if(i<=l&&j>=r){
seg_tree[node]+=(r-l+1)*val;
lazy[node]+=val;
return;
}
push(l,r,node);
int m = (l+r)/2;
update(l,m,i,min(j,m),val,2*node); update(m+1,r,max(i,m+1),j,val,2*node+1);
seg_tree[node]=seg_tree[2*node]+seg_tree[2*node+1];
}
ll query(int l, int r, int i, int j, int node){
if(i>r||j<l) return 0;
if(l>=i&&r<=j){ // OR if(l>=i&&r<=j) returns seg_tree[node]; -> both are correct.
return seg_tree[node];
}
push(l,r,node);
int m = (l+r)/2;
return query(l,m,i,min(j,m),2*node) + query(m+1,r,max(i,m+1),j,2*node+1);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n,m; cin>>n>>m;
while(m--){
int t; cin>>t;
if(t==1){
int i,j,v; cin>>i>>j>>v;
update(0,n-1,i,j-1,v,1);
}
else{
int i,j; cin>>i>>j;
cout<<query(0,n-1,i,j-1,1)<<'\n';
}
}
}
24 hours and couldn't figure out what's wrong in my code. Can anyone help me decode what's wrong with my solution ? I'm getting wrong answer on test case 61 with '!' symbol.
If you can give some tips/advice it would be really helpful.
I suck at problem solving and i get tired of solving the same problem over and over again and in the end i quit.
thanks in advance for the tips.
How is it possible?
Everyone's rating change has been made but my rating is still the same and it shows not even +0 in the contest rating change page.
Even after trying so hard in today's Div.4 I couldn't solve a single good problem.
Conclusion: I'm the problem.
Goodbye Cf, it's not for retards like me.
Name |
---|