Pagini recente » Cod sursa (job #6657) | Cod sursa (job #1081236) | Cod sursa (job #1167481)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
pair <int,int> v[100010];
int a[65][100010],x,y,z,u,mid,st,dr;
int n,m,i,j,k,ok,minim,maxim,o,t,q,p,r;
int main() {
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>v[i].first>>v[i].second;
}
sort(v+1,v+n+1);
for(i=1;i<=n;i++){
for(j=1;j<=64;j++)
a[j][i]=a[j][i-1];
a[v[i].second][i]++;
}
for(k=1;k<=m;k++){
fin>>x>>y>>z;
if (x==0){
p=1;
u=n;
while(p<=u){
mid=p+(u-p)/2;
if(v[mid].first==y)
break;
if(v[mid].first<y)
p=mid+1;
else
u=mid-1;
}
if (p<=u)
v[mid].first+=z;
}
if(x==1){
p=1;
u=n;
while(p<=u){
mid=p+(u-p)/2;
if(v[mid].first<y)
p=mid+1;
else
u=mid-1;
}
st=p;
p=1;
u=n;
while(p<=u){
mid=p+(u-p)/2;
if(v[mid].first>z)
u=mid-1;
else
p=mid+1;
}
dr=u;
maxim=0;
for(i=1;i<=64;i++)
if(a[i][dr]-a[i][st-1]>maxim)
maxim=a[i][dr]-a[i][st-1];
fout<<maxim<<"\n";
}
}
return 0;
}