Cod sursa(job #926337)

Utilizator supermitelArdelean Razvan Mitel supermitel Data 25 martie 2013 09:49:28
Problema Arbori indexati binar Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int a[100010],n,m;

int main()
{
    freopen("aib.in","r",stdin);
    freopen("aib.out","w", stdout);
    scanf("%d%d",&n,&m);
    int i,val, procedure, x, y;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&val);
        a[i]=a[i-1]+val;
    }
    for(int q=0;q<m;q++)
    {
        scanf("%d",&procedure);
        switch(procedure)
        {
        case 0:
            scanf("%d%d",&x,&y);
            for(i=x;i<=n;i++)
                a[i]+=y;
            break;
        case 1:
            scanf("%d%d",&x,&y);
            printf("%d\n",a[y]-a[x-1]);
            break;
        case 2:
            scanf("%d",&x);
            for(i=1;i<n && a[i]<x;i++);
            if(a[i]==x)
                printf("%d\n",i);
            else
                printf("-1\n");
            break;
        }
    }
    return 0;
}