Cod sursa(job #1036461)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 19 noiembrie 2013 13:28:03
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,v[15001],i,j,k,s,sum[1000]={0},rad,nr=1,a,b,sax,a1,b1;
bool op;
int main()
{
    f>>n>>m;
    rad=sqrt(n);
    //g<<rad<<'\n';
    for(i=1;i<=n;i++)
       {
         f>>v[i];
         if(i>nr*rad)
           nr++;
         sum[nr]+=v[i];
       }
  //  for(i=1;i<=nr;i++)
  //      g<<sum[i]<<" ; ";
  //  g<<'\n';
    for(i=1;i<=m;i++)
      {
        f>>op>>a>>b;
        if(op==0)
          {
            v[a]-=b;
            sum[(a-1)/rad+1]-=b;
           // for(k=1;k<=n;k++)
             //   g<<v[k]<<" ";
          //  g<<'\n';
          }
        else
          {
            sax=0;
            a1=(a-1)/rad+1;
            b1=(b-1)/rad+1;
            for(j=(a-1)/rad+1;j<=(b-1)/rad+1;j++)
              sax+=sum[j];
            for(j=a-1;(j-1)/rad+1==a1;j--)
              sax-=v[j];//g<<"- "<<v[j]<<" ";
            for(j=b+1;(j-1)/rad+1==b1;j++)
              sax-=v[j];//g<<"- "<<v[j]<<" ";
           // g<<'\n';
         //   for(k=1;k<=n;k++)
          //      g<<v[k]<<" ";
          //  g<<'\n';
            g<<sax<<'\n';
          }
      }
  f.close();g.close();
  return 0;
}