Pagini recente » Cod sursa (job #1317356) | Cod sursa (job #1000134) | Cod sursa (job #1607858) | Cod sursa (job #2434667) | Cod sursa (job #2549521)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
const int DIM = 1e5 + 5;
int N, M, st, dr, mid, f[66][DIM];
pair<int,int> arr[DIM];
int main(){
fin >> N >> M;
for( int i = 1; i <= N; i++ )
fin >> arr[i].first >> arr[i].second;
sort( arr + 1, arr + N + 1 );
for( int i = 1; i <= N; i++ )
f[ arr[i].second ][i] = 1;
for( int c = 1; c <= 65; c++ )
for( int i = 1; i <= N; i++ )
f[c][i] += f[c][i - 1];
for( int i = 1; i <= M; i++ ){
int op, x, y; fin >> op >> x >> y;
if( op == 0 ) {
for (st = 1, dr = N; st <= dr;) {
mid = (st + dr) >> 1;
if (arr[mid].first == x) {
arr[mid].first = x + y;
break;
}
if (arr[mid].first < x)
st = mid + 1;
else
dr = mid - 1;
}
}else{
int p1, p2;
for (st = 1, dr = N; st <= dr;) {
mid = (st + dr) >> 1;
if (arr[mid].first <= y)
st = mid + 1;
else
dr = mid - 1;
}
p2 = dr;
for (st = 1, dr = N; st <= dr;) {
mid = (st + dr) >> 1;
if (arr[mid].first < x)
st = mid + 1;
else
dr = mid - 1;
}
p1 = st;
int ans = 0;
for( int c = 1; c <= 65; c++ )
ans = max( ans, f[c][p2] - f[c][p1 - 1] );
fout << ans << "\n";
}
}
return 0;
}