Cod sursa(job #113060)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 8 decembrie 2007 17:16:24
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream.h>
#include <math.h>
#define N 15001
int main()
{ifstream fi("datorii.in");
 ofstream fo("datorii.out");
 long n,m,a[N],e[125],i,j,g,p,q,f,d;
 memset(a,0,sizeof(a));
 memset(e,0,sizeof(e));
 fi>>n>>m; 
 d=sqrt(n)+1;//nr de intervale
 for (i=1;i<=n;i++)
 {fi>>g;a[i]=a[i-1]+g;}
 for (i=1;i<=m;i++)
 {fi>>f>>p>>q;
  if(f)
  {fo<<a[q]+e[ceil((float)q/(float)d)]-a[p-1]-e[ceil((floor)(p-1)/d)]<<endl;
  }
  else
  {if(p%d==1)
   {for (j=p/d+1;j<=d;j++)
    {e[j]-=q;}
   }
   else
   {for (j=p;j<=ceil((float)p/(float)d)*d;j++)
    {a[j]-=q;
    }
    for(j=ceil((float)p/(float)d)+1;j<=d;j++)
    {e[j]-=q;}
   }
  }
 }
 fi.close();
 fo.close();
 return 0;
}