Pagini recente » Cod sursa (job #1043473) | Cod sursa (job #588380) | Cod sursa (job #1789560) | Monitorul de evaluare | Cod sursa (job #3328696)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int v[15001], batog[125];
int main()
{
int n, m, nr, i, tp, s=0, a, b, j;
cin>>n>>m;
nr=sqrt(n);
/// citire
for(i=0; i<n; i++){
cin>>v[i];
batog[i/nr]=batog[i/nr]+v[i];
}
/// query
for(i=1; i<=m; i++){
cin>>tp>>a>>b;
a--;
/*cout<<"***"<<endl;
cout<<tp<<" "<<a<<" "<<b<<endl;
for(j=0; j<n; j++){
cout<<v[j]<<" ";
}
cout<<endl;
for(j=0; j<=nr; j++){
cout<<batog[j]<<" ";
}
cout<<endl<<"---";*/
if(tp==0){
///modificare
v[a]=v[a]-b;
batog[a/nr]=batog[a/nr]-b;
}
else if(tp==1){
///verificare
b--;
s=0;
while(a%nr!=0&&a<=b){
s=s+v[a];
a++;
}
while(a+nr<b){
s=s+batog[a/nr];
a=a+nr;
}
while(a<=b){
s=s+v[a];
a++;
}
cout<<s<<endl;
}
}
return 0;
}