Pagini recente » Cod sursa (job #2740435) | Cod sursa (job #359694) | Monitorul de evaluare | Cod sursa (job #2081305) | Cod sursa (job #2522574)
#include <bits/stdc++.h>
#define poz first
#define cul second
#define DIM 100010
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
int n,m,i,j,s[70][DIM],cod,culmax,sol,st,dr,mid,p,u;
pair<int,int> v[DIM];
int main() {
fin>>n>>m;
for (i=1;i<=n;i++) {
fin>>v[i].poz>>v[i].cul;
culmax=max(v[i].cul,culmax);
}
sort(v+1,v+n+1);
for (i=1;i<=n;i++)
for (j=1;j<=culmax;j++) {
if (v[i].cul==j)
s[j][i]=1+s[j][i-1];
else
s[j][i]=s[j][i-1];
}
while (m--) {
fin>>cod>>i>>j;
if (cod==0) {
st=1, dr=n;
while (st<=dr) {
mid=(st+dr)/2;
if (v[mid].poz==i)
break;
if (v[mid].poz<i)
st=mid+1;
else
dr=mid-1;
}
if (st<=dr) //am gasit bila de la coordonata i
v[mid].poz+=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;
}
p=st;
st=1, dr=n;
while (st<=dr) {
mid=(st+dr)/2;
if (v[mid].poz>j)
dr=mid-1;
else
st=mid+1;
}
u=dr;
sol=0;
for (i=1;i<=culmax;i++)
sol=max(sol,s[i][u]-s[i][p-1]);
fout<<sol<<"\n";
}
}
return 0;
}