Pagini recente » Cod sursa (job #2054898) | Cod sursa (job #334447) | Cod sursa (job #1009166) | Cod sursa (job #2331787) | Cod sursa (job #770719)
Cod sursa(job #770719)
#include<iostream>
#include<fstream>
//vorbim aici, ca data trecuta :))
//Conversatie inteligenta cu elfus (cel mai destept om de pe IA)
///dafaq?
//incearca sa faci intai datorii
//esti mandru de tine? iar ai furat fara sa intelegi :))))
//ba nu, era la fel ca asta doar ca trebuia update cu -
//ma rog, pe asta am furat-o =))
// la 6 jumate ma duc sa fraudez codeforces :))
//nush ce e aia, dar ok
//vrei sa jucam un separeu cu ala? :))
//nu, fa-mi rating :))
//logheaza-te. cautam parola
//cred ca l-am pornit prea tarziu
//imi bag pula
//ba, catalina, e fata
//tot n-ai invatat sa trollezi :(
/* hai sa mai incercam o data */
//ba, eu cred ca merg sa mananc cv
//OK :D
//mi-e frica sa te las pe tn singur in pc :))
//nu fuck nimic, doar vb cu mugurica si celelalte din lista ta :)))
//e offline
//nu conteaza :)))
//mai bn nu :))
//deci ma dai afara?
//cum ar fi sa trimit sursa cu conversatia asta pe IA ? :))
//te provoc :D
//pe bune, sa o trimit ? :))
//da, nu cred k sta nimeni sa se uite. :)))
//oricum nu sunt prea bine vazut de admini :D
//mai jucam ?
//mai jucam cateva
//ok, sper sa pot sa-i si trollez calumea
//:)
//=))))
//iar o sa zica admnii k m-am facut pulbere
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
int AIB[100010], M, N;
inline int lsb(int x)
{
return ( x & (-x) );
}
void update(int poz, int val)
{
while(poz <= N){
AIB[poz] += val;
poz += lsb(poz);
}
}
int query(int poz)
{
int s = 0;
while(poz){
s += AIB[poz];
poz -= lsb(poz);
}
return s;
}
int search(int val)
{
int i, pas;
for(pas = 1; pas < N; pas <<= 1);
for(i = 0; pas; pas >>= 1)
if(i + pas <= N && AIB[i + pas] <= val){
i += pas;
val -= AIB[i];
if(!val) return i;
}
return -1;
}
int main()
{
int i, k, x, y;
in >> N >> M;
for(i = 1; i <= N; ++i){
in >> x;
update(i, x);
}
while(M--){
in >> k;
if(k < 2){
in >> x >> y;
if(!k) update(x, y);
else
out << query(y) - query(x - 1) << "\n";
}
else{
in >> x;
out << search(x) << "\n";
}
}
return 0;
}