Pagini recente » Cod sursa (job #2631845) | Cod sursa (job #1900091) | Cod sursa (job #1226232) | Cod sursa (job #1027069) | Cod sursa (job #2355359)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
struct datorie
{
int zi,val;
};
datorie s1[100005];
int n,m,i,j;
int x,s[15005],sdat[100005],k;
int tip,v,t,p,q,suma;
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
{
f>>x;
s[i]=s[i-1]+x;
}
for (i=1;i<=m;i++)
{
f>>tip;
if (tip==0)
{
f>>t>>v;
k++;
s1[k].val=v;
s1[k].zi=t;
sdat[k]=sdat[k-1]+s1[k].val;
}
else
{
f>>p>>q;
suma=s[q]-s[p-1];
int st=1,dr=k,mij,poz1=0,poz2=0;
while (st<=dr)
{
mij=(st+dr)/2;
if (s1[mij].zi<=q)
{
poz2=mij;
st=mij+1;
}
else
dr=mij-1;
}
st=1,dr=k;
while (st<=dr)
{
mij=(st+dr)/2;
if (s1[mij].zi>=p)
{
poz1=mij;
dr=mij-1;
}
else
st=mij+1;
}
g<<suma-(sdat[poz2]-sdat[poz1-1])<<"\n";
}
}
return 0;
}