Cod sursa(job #3328669)
| Utilizator | Data | 9 decembrie 2025 17:26:14 | |
|---|---|---|---|
| Problema | Datorii | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.06 kb |
#include <iostream>
#include <fstream>
#include<cmath>
using namespace std;
int v[15005];
int b[130];
int main()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m;
fin>>n>>m;
int BSZ=sqrt(n);
for(int i=0;i<n;i++)
{
fin>>v[i];
b[i/BSZ]+=v[i];
}
for(int i=1;i<=m;i++)
{
int t,x,y;
fin>>t>>x>>y;
x--;
//y--;
if(t==0)
{
v[x]-=y;
b[x/BSZ]-=y;
}
else
{
int s=0;
y--;
while(x%BSZ!=0 && x<=y)
{
s+=v[x];
x++;
}
///int k=j/BSZ;
while(x+BSZ<y)
{
s+=b[x/BSZ];
x+=BSZ;
///k++;
}
while(x<=y)
{
s+=v[x];
x++;
}
fout<<s<<'\n';
}
}
fin.close();
fout.close();
return 0;
}
