#include<bits/stdc++.h>
using namespace std;
long long n,a,b,_a[1000010],t[1000010],lz[1000010];
long long l(long long id){return id*2;}
long long r(long long id){return id*2+1;}
void push_up(long long id){
t[id]=t[l(id)]+t[r(id)];
}
void build(long long id,long long ll,long long rr){
lz[id]=0;
if(ll==rr){t[id]=_a[ll];return ;}
long long mid=(ll+rr)/2;
build(l(id),ll,mid);
build(r(id),mid+1,rr);
push_up(id);
//cout<<id<<endl;
}
void f(long long id,long long ll,long long rr,long long tg){
lz[id]+=tg;
t[id]+=tg*(rr-ll+1);
}
void push_down(long long id,long long ll,long long rr){
long long mid=(ll+rr)/2;
f(l(id),ll,mid,lz[id]);
f(r(id),mid+1,rr,lz[id]);
lz[id]=0;
}
void update(long long nl,long long nr,long long ll,long long rr,long long id,long long k){
if(nl<=ll&&rr<=nr){
t[id]+=k*(rr-ll+1);
lz[id]+=k;
return;
}
push_down(id,ll,rr);
long long mid=(ll+rr)/2;
if(nl<=mid) update(nl,nr,ll,mid,l(id),k);
if(nr>mid) update(nl,nr,mid+1,rr,r(id),k);
push_up(id);
//cout<<"YJP AK IOI!";
}
long long q(long long nl,long long nr,long long ll,long long rr,long long id){
long long ret=0;
if(nl<=ll&&rr<=nr){return t[id];}
long long mid=(ll+rr)/2;
push_down(id,ll,rr);
if(nl<=mid) ret+=q(nl,nr,ll,mid,l(id));
if(nr>mid) ret+=q(nl,nr,mid+1,rr,r(id));
return ret;
}
int main(){
n=2;
scanf("%lld %lld",&a,&b);
build(1,1,n);
update(1,1,1,n,1,a);
update(2,2,1,n,1,-b);
printf("%lld",q(1,2,1,n,1));
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:68:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld %lld",&a,&b);
^