Pagini recente » Cod sursa (job #3340637) | Cod sursa (job #521175) | Cod sursa (job #3341395) | Cod sursa (job #1615217) | Cod sursa (job #3341050)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
const int NMAX=1e5+1;
int n, m, x[64][NMAX], nr[64];
int cautare(int l, int r, int val, int c){
int rez=0;
while(l<=r){
int m=(l+r)/2;
if(x[c][m]<=val){
rez=max(rez, m);
l=m+1;
}
else{
r=m-1;
}
}
return rez;
}
int main(){
fin>>n>>m;
int a, c;
for(int i=1;i<=n;i++){
fin>>a>>c;
x[c][++nr[c]]=a;
}
int op, i, j;
while(m--){
fin>>op>>i>>j;
if(op==0){
int rez=0, crez=0;
for(int c=1;c<65;c++){
int poz=cautare(1, nr[c], i, c);
if(x[c][poz]==i){
rez=poz;
crez=c;
break;
}
}
x[crez][rez]+=j;
}
else{
int rez=0;
for(int c=1;c<65;c++){
int l=cautare(1, nr[c], i-1, c);
int r=cautare(1, nr[c], j, c);
//cout<<c<<' '<<l<<' '<<r<<endl;
rez=max(rez, r-l);
}
//cout<<rez<<endl;
fout<<rez<<'\n';
}
}
return 0;
}