Cod sursa(job #307197)

Utilizator GulosSerban Petrescu Gulos Data 23 aprilie 2009 17:40:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream>   
#include<fstream>   
  
using namespace std;   
  
int main(){   
    ifstream fin("datorii.in");   
    ofstream fout("datorii.out");   
    int m,n,A[15001],v[15001],s1,s2,O[3],x;   
    fin>>n>>m;   
    int i,j;   
    for (i=1;i<=n;i++){   
        fin>>A[i];   
        x=(i^(i-1))&i;   
        v[i]=0;   
        for (j=0;j<x;j++)   
            v[i]+=A[i-j];   
    }   
    for (i=0;i<m;i++){   
        fin>>O[0]>>O[1]>>O[2];   
        if (O[0]){   
            s1=0;   
            s2=0;   
            while (O[2]>0){   
                s1+=v[O[2]];   
                x=(O[2]^(O[2]-1))&O[2];   
                O[2]-=x;   
            }   
            x=0;   
            O[1]--;   
            while (O[1]>0){   
                s2+=v[O[1]];   
                x=(O[1]^(O[1]-1))&O[1];   
				O[1]-=x; 
            }   
            fout<<s1-s2<<'\n';   
        }   
        else{   
            while (O[1]<=n){   
                v[O[1]]-=O[2];   
                x=(O[1]^(O[1]-1))&O[1];   
                O[1]+=x;   
            }   
        }   
    }   
}