Cod sursa(job #1508635)
| Utilizator | Data | 22 octombrie 2015 19:45:25 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.34 kb |
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
int main(){
ifstream in ("datorii.in");
int si,num;
in>>si;
in>>num;
int a[num];
for(int i=1;i<=si;i++)
in>>a[i];
int op,l1,l2,p,s1=0,s2=0;
for(int i=1;i<=num;i++){
in>>op;in>>l1;in>>l2;
if(op==0){
p=0;
while(l1<=si){
a[l1]-=l2;
while( l1 & pow(2,p)==0)
p++;
l1+=pow(2,p);
p++;
}
}
else{
l1--;s1=0;
while(l1>0){
s1+=a[l1];
while( l1 & pow(2,p)==0)
p++;
l1-=pow(2,p);
p++;
}
p=0;s2=0;
while(l2>0){
s2+=a[l2];
while(l2 & pow(2,p)==0)
p++;
l2-=pow(2,p);
p++;
}
ofstream out("datorii.out",ios::app);
out<<s2-s1<<endl;
out.close();
}
}
in.close();
return 0;
}
