Cod sursa(job #2355357)

Utilizator BAlexandruBorgovan Alexandru BAlexandru Data 25 februarie 2019 23:46:15
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream>

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

struct datorie
{
  int zi,val;
};

datorie s1[15005];

int n,m,i,j;
int x,s[15005],sdat[15005],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;
}