Pagini recente » Cod sursa (job #2777397) | Cod sursa (job #3125554) | Cod sursa (job #2198944) | Cod sursa (job #50366) | Cod sursa (job #2520791)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
pair <int, int> b[100005];
int s[70][100005];
int n,m,i,j,maxim,st,dr,p,u,mij,k,q,af;
int main()
{
fin >> n >> m;
for (i=1;i<=n;i++)
{
fin >> b[i].first >> b[i].second;
if (b[i].second>maxim) maxim=b[i].second;
}
sort(b+1,b+n+1);
for (i=1;i<=n;i++)
{
for (j=1;j<=maxim;j++)
{
if (j==b[i].second) s[j][i]=s[j][i-1]+1;
else s[j][i]=s[j][i-1];
}
}
for (k=1;k<=m;k++)
{
fin >> q >> i >> j;
if (q==0)
{
p=1;
u=n;
while (p<=u)
{
mij=(p+u)/2;
if (b[mij].first==i) break;
if (b[mij].first<i) p=mij+1;
else u=mij-1;
}
if (p<=u) b[mij].first+=j;
}
else
{
p=1;
u=n;
while (p<=u)
{
mij=(p+u)/2;
if (b[mij].first<i) p=mij+1;
else u=mij-1;
}
st=p;
p=1;
u=n;
while (p<=u)
{
mij=(p+u)/2;
if (b[mij].first>j) u=mij-1;
else p=mij+1;
}
dr=u;
af=0;
for (i=1;i<=maxim;i++) if (s[i][dr]-s[i][st-1]>af) af=s[i][dr]-s[i][st-1];
fout << af << "\n";
}
}
return 0;
}