Pagini recente » Cod sursa (job #30382) | Cod sursa (job #1357127) | Cod sursa (job #1498886) | Cod sursa (job #194996) | Cod sursa (job #2518001)
#include <iostream>
#include <fstream>
#include <algorithm>
#define dim 1000005
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
long long n,s[70][dim],m,i,j,colormax,tip,a,b;
pair<long long,long long> v[dim];
void gaseste(long long a,long long b){
long long st=1,dr=n;
while(st<=dr){
long long mid=(dr-st)/2+st;
if(v[mid].first<a)
st=mid+1;
else if(v[mid].first>a)
dr=mid-1;
else {
v[mid].first+=b;
return;
}
}
}
long long pozitie(long long x){
long long st=1;
long long dr=n;
while(st<=dr){
long long mid=(dr-st)/2+st;
if(v[mid].first<x)
st=mid+1;
else dr=mid-1;
}
return st;
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[i].first>>v[i].second;
colormax=max(colormax,v[i].second);
}
sort(v+1,v+n+1);
for(i=1;i<=n;i++)
for(j=1;j<=colormax;j++){
s[j][i]=s[j][i-1];
if(v[i].second==j) s[j][i]++;
}
for(i=1;i<=m;i++){
fin>>tip>>a>>b;
if(tip==0)
gaseste(a,b);
else {
long long pozst=pozitie(a);
long long pozdr=pozitie(b+1)-1;
long long diff=0;
for(j=1;j<=colormax;j++){
diff=max(diff, s[j][pozdr]-s[j][pozst]);
}
fout<<diff<<"\n";
}
}
}