Pagini recente » Cod sursa (job #3320727) | Cod sursa (job #3323549) | Cod sursa (job #3329173) | Cod sursa (job #3312138) | Cod sursa (job #3312189)
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define ll long long
#define ld long double
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
const int NMAX = 1e5;
const int VMAX = 64;
int n, m;
int a[VMAX + 1][NMAX + 1];
pair<int, int> b[NMAX + 1];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
fin >> n >> m;
for(int i = 1; i <= n; i++) {
fin >> b[i].first >> b[i].second;
}
sort(b + 1, b + n + 1);
for(int i = 1; i <= n; i++) {
a[b[i].second][i]++;
}
for(int j = 1; j <= VMAX; j++) {
for(int i = 1; i <= n; i++) {
a[j][i] += a[j][i - 1];
}
}
while(m--) {
int type, i, j;
fin >> type >> i >> j;
if(type == 0) {
int pos = lower_bound(b + 1, b + n + 1, make_pair(i, 0)) - b;
assert(b[pos].first == i);
b[pos].first += j;
}
else {
int pos_right = upper_bound(b + 1, b + n + 1, make_pair(j, 100)) - b - 1;
int pos_left = lower_bound(b + 1, b + n + 1, make_pair(i, 0)) - b;
int answer = 0;
for(int j = 1; j <= VMAX; j++) {
answer = max(answer, a[j][pos_right] - a[j][pos_left - 1]);
}
fout << answer << '\n';
}
}
return 0;
}