update
This commit is contained in:
parent
edcfb1e48f
commit
11660860e7
@ -2,7 +2,6 @@
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <vector>
|
||||
|
||||
using ll = int64_t;
|
||||
|
54
src/P3368/P3368.cpp
Normal file
54
src/P3368/P3368.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
|
||||
using ll = int64_t;
|
||||
using std::cin, std::cout;
|
||||
|
||||
const ll maxn = 500000 + 5;
|
||||
ll n, m, bit[maxn];
|
||||
|
||||
ll lb(const ll &n){
|
||||
return n&(-n);
|
||||
}
|
||||
|
||||
void rgadd(ll l, ll r, const ll &k){
|
||||
++r;
|
||||
while(l<=n){
|
||||
bit[l]+=k;
|
||||
l+=lb(l);
|
||||
}
|
||||
while(r<=n){
|
||||
bit[r]-=k;
|
||||
r+=lb(r);
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
|
||||
|
||||
cin>>n>>m;
|
||||
for(ll i{1};i<=n;i++){
|
||||
ll a;
|
||||
cin>>a;
|
||||
rgadd(i, i, a);
|
||||
}
|
||||
for(ll i{1};i<=m;i++){
|
||||
ll t;
|
||||
cin>>t;
|
||||
if(t==1){
|
||||
ll x, y, k;
|
||||
cin>>x>>y>>k;
|
||||
rgadd(x, y, k);
|
||||
}else{
|
||||
ll x;
|
||||
cin>>x;
|
||||
ll res{};
|
||||
while(x!=0){
|
||||
res+=bit[x];
|
||||
x-=lb(x);
|
||||
}
|
||||
cout<<res<<'\n';
|
||||
}
|
||||
}
|
||||
}
|
51
src/P3374/P3374.cpp
Normal file
51
src/P3374/P3374.cpp
Normal file
@ -0,0 +1,51 @@
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <istream>
|
||||
|
||||
using ll = int64_t;
|
||||
using std::cin, std::cout;
|
||||
|
||||
const ll maxn = 5e5+5;
|
||||
ll n, m, bit[maxn];
|
||||
|
||||
ll lb(const ll &n){
|
||||
return n&(-n);
|
||||
}
|
||||
|
||||
int main(){
|
||||
std::iostream::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
|
||||
|
||||
cin>>n>>m;
|
||||
for(ll i{1};i<=n;i++){
|
||||
ll a;
|
||||
cin>>a;
|
||||
ll now{i};
|
||||
while(now<=n){
|
||||
bit[now]+=a;
|
||||
now+=lb(now);
|
||||
}
|
||||
}
|
||||
const auto sch = [](ll n)->ll{
|
||||
ll res{};
|
||||
while(n!=0){
|
||||
res+=bit[n];
|
||||
n-=lb(n);
|
||||
}
|
||||
return res;
|
||||
};
|
||||
// for(ll i{1};i<=n;i++){
|
||||
// cout<<sch(i)-sch(i-1)<<'\n';
|
||||
// }
|
||||
while(m--){
|
||||
ll t, x, y;
|
||||
cin>>t>>x>>y;
|
||||
if(t==1){
|
||||
while(x<=n){
|
||||
bit[x]+=y;
|
||||
x+=lb(x);
|
||||
}
|
||||
}else{
|
||||
cout<<sch(y)-sch(x-1)<<'\n';
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user