Pagini recente » Cod sursa (job #1610374) | Cod sursa (job #1600535) | Cod sursa (job #2220381) | Monitorul de evaluare | Cod sursa (job #1046769)
#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);
scanf("%d %d", &N, &M);
for( int i = 1; i <= N; ++i) {
int x;
scanf("%d", &x);
//add( arb, i, x);
}
for( int i = 1; i <= M; ++i) {
int a, b, c;
scanf("%d %d", &a, &b);
if( a == 0) {
scanf("%d", &c);
//add( arb, b, c);
}
if( a == 1) {
scanf("%d", &c);
//cout<<sum(arb, c) - sum(arb, b - 1)<<"\n";
}
if( a == 2) {
//cout<<get_value(arb,b)<<"\n";
}
}
return 0;
}