Cod sursa(job #170677)

Utilizator cos_minBondane Cosmin cos_min Data 3 aprilie 2008 00:37:36
Problema Arbori indexati binar Scor Ascuns
Compilator cpp Status done
Runda Marime 1.15 kb
#include <stdio.h>
#include <fstream>
using namespace std;

#define in "aib.in"
#define out "aib.out"
#define dim 100001

int N, M, T;
int S[dim];

int main()
{
    int K, X, Y, h;
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    
    S[0] = 0;
    
    scanf("%d%d", &N, &M);
    for ( int i = 1; i <= N; i++ )
    {
        scanf("%d", &h);
        S[i] = h + S[i-1];
    }
    
    for ( ; M; M-- )
    {
        scanf("%d", &K);
        
        if ( K < 2 )
        {
             scanf("%d%d", &X, &Y);
             
             if ( K == 1 )
             {
                  printf("%d\n", S[Y] - S[X-1] );
                  
                  continue;
             } 
             
             for ( int i = X; i <= N; i++ )
                 S[i] += Y;
        }
        else if ( K == 2 )
        {
             int ok = 0;
             scanf("%d", &X);
             
             int i;
             for ( i = 1; i <= N && !ok; i++ )
                 if ( S[i] == X ) ok = 1;
             
             if ( !ok ) printf("-1\n");
             else       printf("%d\n", i-1);
        }
    }
}