Pagini recente » Profil Ciucu_Madalina_Florentina_322CA | Cod sursa (job #1009315) | Cod sursa (job #1433122) | Cod sursa (job #581376) | Cod sursa (job #2527330)
#include <fstream>
#include <algorithm>
#define poz first
#define cul second
using namespace std;
ifstream f("marbles.in");
ofstream g("marbles.out");
pair < int, int > v[100009];
int a[100009][65];
int n, m, i, j, st, dr, mid, poz1, poz2, p1, p2, op, maxi;
int main()
{
f>>n>>m;
for ( i=1; i <= n; i++ )
f>>v[i].poz>>v[i].cul;
sort ( v+1, v+n+1 );
for ( i=1; i <= n; i++ )
for ( j=1; j <= 64; j++ )
if ( v[i].cul == j )
a[i][j] = a[i-1][j]+1;
else a[i][j] = a[i-1][j];
for ( ; m--; ){
f>>op>>poz1>>poz2;
if ( op == 0 ){
st = 1; dr = n;
while ( st <= dr ){
mid = st+((dr-st)>>1);
if ( v[mid].poz == poz1 )
break;
if ( v[mid].poz < poz1 )
st = mid+1;
else dr = mid-1;
}
v[mid].poz += poz2;
continue;
}
st = 1; dr = n;
while ( st <= dr ){
mid = st+((dr-st)>>1);
if ( v[mid].poz < poz1 )
st = mid+1;
else dr = mid-1;
}
p1 = st;
st = 1; dr = n;
while ( st <= dr ){
mid = st+((dr-st)>>1);
if ( v[mid].poz <= poz2 )
st = mid+1;
else dr = mid-1;
}
p2 = dr;
maxi = -1;
for ( i=1; i <= 64; i++ )
maxi = max ( maxi, a[p2][i]-a[p1-1][i] );
g<<maxi<<"\n";
}
return 0;
}