Pagini recente » Cod sursa (job #2520311) | Cod sursa (job #1232573) | Cod sursa (job #928788) | Cod sursa (job #777559) | Cod sursa (job #782704)
Cod sursa(job #782704)
#include<fstream>
using namespace std;
ifstream f1("datorii.in");
ofstream f2("datorii.out");
long n,m, i,j, cod,t,v, a[1000], c[15000];
long nz(long x){
long nr;
for (nr=1; x%2==0; nr*=2, x/=2);
return (nr); }
void modificare(long t, long v){
while (t<=n)
{ c[t]-=v;
t+=nz(t); }
}
void interogare(long st, long dr) {
long p, smd, sms;
for (p=st-1, sms=0;p ; p-=nz(p)) sms+=c[p];
for (p=dr, smd=0; p ; p-=nz(p)) smd+=c[p];
f2<<smd-sms<<"\n"; };
int main(){
f1>>n>>m;
for (i=1;i<=n;i++)
f1>>a[i];
int sm;
for (i=1; i<=n; i++)
if (i%2!=0) c[i]=a[i];
else { for (sm=0,j=i-nz(i)+1;j<=i; j++) sm+=a[j];
c[i]=sm; };
for (i=1; i<=m; i++)
{ f1>>cod>>t>>v;
if (cod) interogare(t,v);
else modificare(t,v); };
f1.close();
f2.close();
return 0;
}