Pagini recente » Cod sursa (job #2741048) | Cod sursa (job #2999795) | Cod sursa (job #2920621) | Cod sursa (job #959386) | Cod sursa (job #2702750)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int p2(int x)
{
int aux=x;
while(x%2==0)
x/=2;
return aux/x;
}
const int nmax=15005;
int n,m,i,j,s[nmax],aib[nmax],v[nmax];
void scade(int x,int vall)
{
for(int poz=x;poz<=n;poz+=poz&(-poz))
aib[poz]-=vall;
}
int suma(int x)
{
int s=0;
for(int poz=x;poz;poz-=poz&(-poz))
s+=aib[poz];
return s;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++)
s[i]=s[i-1]+v[i];
for(i=1;i<=n;i++)
{
int temp=i-p2(i);
cout<<temp<<endl;
aib[i]=s[i]-s[temp];
}
while(m--)
{
int st,dr,val;
fin>>val>>st>>dr;
if(val==0)
scade(st,dr);
else
fout<<suma(dr)-suma(st-1)<<'\n';
/**for(i=1;i<=n;i++)
cout<<aib[i]<<" ";
cout<<'\n';
cout<<suma(dr)<<endl;
*/
}
return 0;
}