Pagini recente » Cod sursa (job #1786119) | Cod sursa (job #1765000) | Cod sursa (job #287343) | Cod sursa (job #876497) | Cod sursa (job #2396811)
#include <fstream>
using namespace std;
ifstream in("aib.in");
ofstream out("aib.out");
int AIB[100001], n, m;
inline int zeros(int x)
{
return x & (-x);
}
inline void add(int poz, int c)
{
for (int i = poz; i <= n; i += zeros(i))
AIB[i] += c;
}
inline int compute(int poz)
{
int rez = 0;
for (int i = poz; i > 0; i -= zeros(i))
rez += AIB[i];
return rez;
}
int main()
{
int c, a, b;
in >> n >> m;
for (int i = 1; i <= n; ++i)
{
in >> c;
add(i, c);
}
for (int q = 1; q <= m; ++q)
{
in >> c;
if (c != 2)
{
in >> a >> b;
if (c == 0)
add(a, b);
else if (c == 1)
out << compute(b) - compute(a - 1) << '\n';
}
else
{
in >> a;
int i = 1;
while (compute(i) < a)
++i;
out << i << '\n';
}
}
return 0;
}