Pagini recente » Cod sursa (job #1474979) | Cod sursa (job #2971312) | Cod sursa (job #1004845) | Cod sursa (job #1301918) | Cod sursa (job #1046768)
#include<stdio.h>
#include<iostream>
using namespace std;
#define maxn 100001
int arb[ maxn];
int N;
void add( int *arb, int index, int value) {
while( index <= N) {
arb[index] += value;
index += (index & -index);
}
}
int get_value( int *arb, int value) {
int poz = 0;
int pas = (1<<18);
while( pas>>= 1 ) {
if( poz + pas <= N && arb[poz + pas] <= value) {
poz+= pas;
value -= arb[poz];
}
}
if( value == 0) {
return poz;
}
return -1;
}
int sum( int *arb, int index) {
int rez = 0;
while( index ) {
rez += arb[index];
index -= ( index & -index);
}
return rez;
}
int main() {
int M;
freopen("aib.in", "r", stdin);
freopen("aib.out", "w", stdout);
cin>>N>>M;
for( int i = 1; i <= N; ++i) {
int x;
cin>>x;
//add( arb, i, x);
}
for( int i = 1; i <= M; ++i) {
int a, b, c;
cin>>a>>b;
if( a == 0) {
cin>>c;
//add( arb, b, c);
}
if( a == 1) {
cin>>c;
//cout<<sum(arb, c) - sum(arb, b - 1)<<"\n";
}
if( a == 2) {
//cout<<get_value(arb,b)<<"\n";
}
}
return 0;
}