Pagini recente » Cod sursa (job #1434582) | Cod sursa (job #1173427) | Cod sursa (job #2379565) | Cod sursa (job #2983408) | Cod sursa (job #2517290)
#include <fstream>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
ifstream cin ("marbles.in");
ofstream cout ("marbles.out");
int n, q, t, x, y;
pair <int, int> v[100005];
int sp[100005][65];
int lower(int val) {
int st = 1, dr = n, mid;
while(st <= dr) {
mid = (st + dr) >> 1;
if(v[mid].first < val)
st = mid + 1;
else
dr = mid - 1;
}
return st;
}
int upper(int val) {
int st = 1, dr = n, mid;
while(st <= dr) {
mid = (st + dr) >> 1;
if(v[mid].first <= val)
st = mid + 1;
else
dr = mid - 1;
}
return dr;
}
int main() {
cin >> n >> q;
for(int i = 1; i <= n; i++)
cin >> v[i].first >> v[i].second;
sort(v + 1, v + n + 1);
for(int i = 1; i <= n; i++) {
sp[i][v[i].second]++;
for(int j = 1; j <= 64; j++)
sp[i][j] += sp[i - 1][j];
}
for(; q; q--) {
cin >> t >> x >> y;
if(!t) {
int st = lower(x);
v[st].first += y;
} else {
int st = lower(x), dr = upper(y), ans = 0;
for(int j = 1; j <= 64; j++)
ans = max(ans, sp[dr][j] - sp[st - 1][j]);
cout << ans << "\n";
}
}
return 0;
}