Cod sursa(job #3140899)
Utilizator | Data | 10 iulie 2023 15:29:51 | |
---|---|---|---|
Problema | Arbori indexati binar | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include<fstream>
using namespace std;
ifstream F("aib.in");
ofstream G("aib.out");
int i,n,c[100001],m,j,l,k,r,s,t;
int main()
{
for(F>>n>>m,i=1;i<=n;++i)
for(F>>k,j=i;j<=n;c[j]+=k,j+=(j&(-j)));
for(l=1;l<=n;l<<=1);
for(;m--;)
if(F>>i>>j,!i)
for(F>>k;j<=n;c[j]+=k,j+=(j&-j));
else if(i<2) {
for(F>>k,s=t=0;k>0;s+=c[k],k-=(k&-k));
for(--j;j>0;t+=c[j],j-=(j&-j));
G<<s-t<<'\n';
} else {
for(i=0,r=l;r&&j;r>>=1)
if(i+r<=n&&j>=c[i+r])
i+=r,j-=c[i];
G<<(!j&&i?i:-1)<<'\n';
}
return 0;
}