Cod sursa(job #330678)

Utilizator cezarbotolanbotolan cezar cezarbotolan Data 11 iulie 2009 11:10:05
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.99 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;
            }
        }
    }
}
#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;
            }
        }
    }
}