Cod sursa(job #265798)

Utilizator redkar23Dezactiveazama redkar23 Data 24 februarie 2009 15:21:34
Problema Arbori indexati binar Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

fstream f;
fstream g;

int n;
int a[100001];
int B[100001];
int i;
int m;
int x,b,c;


void sum(int b,int c)
{
    int sum=0;
    sum=B[c];
    for(x=1;x<b;x++) 
      sum-=a[x];
    g << sum << "\n";  
}

int pozitie(int b)
{
   for(x=1;x<=n;x++)
      if(B[x]==b)
        return x;
  return -1;
}

int main()
{
    f.open("aib.in",fstream::in);
    f>> n >> m;
    f >> a[1];
    B[1]=a[1];
    for(i=2;i<=n;i++)
      {
                     f >> a[i];
                     B[i]=a[i]+B[i-1];
      }    
    
    g.open("aib.out",fstream::out);
    for(i=0;i<m;i++)
    {
       f >> x;
       switch(x)
       {
         case 0:
             f>> b >> c;
            a[b]+=c;
            for(x=b;x<=n;x++)
               B[x]+=c;
            break;
         case 1:
              f >> b >> c;
            sum(b,c);
            break;
         case 2:         
            f >> b;
            g << pozitie(b)<<"\n";
       }                
    }      
    g.close();
          
    return 0;
}