Cod sursa(job #1508635)

Utilizator arvlgeArdeleanu Vlad George arvlge Data 22 octombrie 2015 19:45:25
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;

int main(){

    ifstream in ("datorii.in");
        int si,num;
        in>>si;
        in>>num;

        int a[num];

        for(int i=1;i<=si;i++)
            in>>a[i];

        int op,l1,l2,p,s1=0,s2=0;

        for(int i=1;i<=num;i++){

            in>>op;in>>l1;in>>l2;
            if(op==0){
                p=0;
                while(l1<=si){
                    a[l1]-=l2;
                    while( l1 & pow(2,p)==0)
                        p++;
                    l1+=pow(2,p);
                    p++;
                }
            }
            else{
                l1--;s1=0;
                while(l1>0){
                    s1+=a[l1];
                    while( l1 & pow(2,p)==0)
                        p++;
                    l1-=pow(2,p);
                    p++;
                }

                p=0;s2=0;
                while(l2>0){
                    s2+=a[l2];
                    while(l2 & pow(2,p)==0)
                        p++;
                    l2-=pow(2,p);
                    p++;
                }

                ofstream out("datorii.out",ios::app);
                    out<<s2-s1<<endl;
                    out.close();
            }

        }

        in.close();

        return 0;
}