Pagini recente » Cod sursa (job #2356511) | Cod sursa (job #2889060) | Cod sursa (job #656245) | Cod sursa (job #2266202) | Cod sursa (job #990893)
Cod sursa(job #990893)
#include <cstdio>
//#include <fstream>
int aib[15001];
int main(){
//std::ifstream fin("datorii.in");
//std::ofstream fout("datorii.out");
std::FILE *fin=std::fopen("datorii.in","r");
std::FILE *fout=std::fopen("datorii.out","w");
int N,M;
//fin>>N>>M;
std::fscanf(fin,"%i %i",&N,&M);
int temp1,temp2,i,sum;
for(i=1;i<=N;++i){
//fin>>temp2;
std::fscanf(fin,"%d",&temp2);
temp1=i;
while(temp1<=N){
aib[temp1]+=temp2;
temp1 += temp1&(-temp1);
}
}
while(M--){
//fin>>i>>temp1>>temp2;
std::fscanf(fin,"%d %d %d",&i,&temp1,&temp2);
if(i==0){
while(temp1<=N){
aib[temp1]-=temp2;
temp1 += temp1&(-temp1);
}
}
else{
sum=0; temp1--;
while(temp1!=temp2)
if(temp2>temp1){
sum+=aib[temp2];
temp2&=temp2-1;
}
else{
sum-=aib[temp1];
temp1-=temp1&(-temp1);
}
//fout<<sum<<'\n';
std::fprintf(fout,"%d\n",sum);
}
}
std::fclose(fout);
std::fclose(fin);
}