Pagini recente » Cod sursa (job #2214583) | Cod sursa (job #1100981) | Cod sursa (job #2811588) | Cod sursa (job #1782809) | Cod sursa (job #2522482)
#include <fstream>
#include <algorithm>
using namespace std;
pair <int, int> b[100011];
int n, m, i, j, s[65][100011],maxim, st, dr, p, u, mid, k, t, cmax;
int main()
{
ifstream fin("marbles.in");
ofstream fout("marbles.out");
fin>>n>>m;
for (i=1; i<=n; i++)
{
fin>>b[i].first>>b[i].second;
if (b[i].second > cmax)
cmax = b[i].second;
}
sort(b+1, b+n+1);
for (i=1; i<=n; i++)
{
for (j=1; j<=cmax; j++)
if (j == b[i].second)
s[ j ][i] = 1 + s[ j ][i-1];
else
s[j][i] = s[j][i-1];
}
for (k=1; k<=m; k++)
{
fin>>t>>i>>j;
if (t == 0)
{
p = 1;
u = n;
while (p<=u)
{
mid = p + (u-p)/2;
if (b[mid].first == i)
break;
if (b[mid].first < i)
p = mid+1;
else
u = mid-1;
}
if (p<=u)
b[mid].first += j;
}
else
{
p = 1;
u = n;
while (p<=u)
{
mid = p + (u-p)/2;
if (b[mid].first < i)
p = mid+1;
else
u = mid-1;
}
st = p;
p = 1;
u = n;
while (p<=u)
{
mid = p + (u-p)/2;
if (b[mid].first > j)
u = mid - 1;
else
p = mid+1;
}
dr = u;
maxim = 0;
for (i=1; i<=cmax; i++)
if (s[i][dr] - s[i][st-1] > maxim)
maxim = s[i][dr] - s[i][st-1];
fout<<maxim<<"\n";
}
}
return 0;
}