Pagini recente » Cod sursa (job #2917870) | Cod sursa (job #1609719) | Cod sursa (job #1585485) | Cod sursa (job #1820159) | Cod sursa (job #2974879)
#include <iostream>
#include <fstream>
#define inmat lin + dirL[i] <= n && lin + dirL[i] >= 1 && col + dirC[i] <= n && col + dirC[i] >= 1
using namespace std;
ifstream in("taxe2.in");
ofstream out("taxe2.out");
const int N = 1 << 18;
int v[N],n;
int tree[N];
int rez(int poz)
{
int sum = 0;
while (poz < 0)
{
sum += tree[poz];
poz -= poz & -poz;
}
return poz;
}
void build()
{
for (int i = 1; i <= n; i++)
{
int p = i+ (i & -i);
if (p <= n)
{
tree[p] = tree[p] + tree[i];
}
}
}
void swap(int poz, int k)
{
while (poz <= n)
{
tree[poz] += k;
poz += poz & -poz;
}
}
int main()
{
int i, j, m;
cin >> n >> m;
for (i = 1; i <= n; i++)
{
cin >> v[i];
tree[i] = v[i];
}
build();
for (i = 1; i <= m; i++)
{
int x1, x2;
cin >> x1 >> x2;
cout << rez(x2) - rez(x1-1) << '\n';
}
}