Pagini recente » Cod sursa (job #2831317) | Cod sursa (job #2266817) | Cod sursa (job #2094798) | Cod sursa (job #2016694) | Cod sursa (job #856814)
Cod sursa(job #856814)
#include<fstream>
#include<math.h>
using namespace std;
int a[15001], b[130], n, nr, r;
ifstream f("datorii.in");
ofstream g("datorii.out");
void update(int z,int val)
{
z--;
a[z]-=val;
b[z/r]-=val;
}
void swap(int z1,int z2){
int s=0,i;
z1--;
z2--;
int a1,a2;
a1=z1/r;
a2=z2/r;
if(a1==a2)
for(i=z1;i<=z2;i++)
s+=a[i];
else{
int x;
x=(a1+1)*r;
for(i=z1;i<x;i++)
s+=a[i];
for(i=a1+1;i<a2;i++)
s+=b[i];
x=a2*r;
for(i=x;i<=z2;i++)
s+=a[i];
}
printf("%d\n",s);
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int m;
double k;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",a+i);
k=n;
k=sqrt(k);
r=int(k);
nr=0;
for(int i=1;i<n;i++){
if(i%r==0)
++nr;
b[nr]+=a[i];
}
int x,y,cod;
for(int i=1;i<=m;i++){
scanf("%d%d%d",&cod,&x,&y);
if(cod==0)
update(x,y);
else
swap(x,y);
}
return 0;
}