Pagini recente » Profil asdf2727 | Cod sursa (job #405576) | Rating Niga Alexandru (alexniga) | Cod sursa (job #281648) | Cod sursa (job #2521852)
#include <fstream>
#include <algorithm>
#define poz first
#define cul second
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
int n, m, i, j, op, nr[100001][65], culoare, st, dr, mid, maxim, stanga, dreapta;
pair<int, int> v[100001];
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[i].poz>>v[i].cul;
}
sort(v+1, v+n+1);
for(i=1;i<=n;i++){
culoare = v[i].cul;
for(j=1;j<=64;j++)
if(j == culoare)
nr[i][j] = nr[i-1][j] + 1;
else
nr[i][j] = nr[i-1][j];
}
while(m--){
fin>>op>>i>>j;
if(op == 0){
st = 1;
dr = n;
while(st<=dr){
mid = (st+dr)/2;
if(v[mid].poz < i)
st = mid+1;
else
dr = mid-1;
}
v[st].poz = i+j;
}
else{
st = 1;
dr = n;
while(st<=dr){
mid = (st+dr)/2;
if(v[mid].poz < i)
st = mid+1;
else
dr = mid-1;
}
stanga = st-1;
st = 1;
dr = n;
while(st <= dr){
mid = (st+dr)/2;
if(v[mid].poz > j)
dr = mid-1;
else
st = mid+1;
}
dreapta = dr;
maxim = 0;
for(i=1;i<=64;i++)
if(nr[dreapta][i] - nr[stanga][i] > maxim)
maxim = nr[dreapta][i] - nr[stanga][i];
fout<<maxim<<"\n";
}
}
return 0;
}