Pagini recente » Cod sursa (job #3191258) | Cod sursa (job #2366447) | Cod sursa (job #1283165) | Cod sursa (job #2423975) | Cod sursa (job #470621)
Cod sursa(job #470621)
#include <fstream>
using namespace std;
struct bila{int x;short int c;} v[1<<17];
int a[1<<17][65],n,m;
ifstream in("marbles.in");
ofstream out("marbles.out");
int bs(int x,bool tip)
{
int i,step=1<<16;
for (i=0;step;step>>=1)
if (i+step<=n && v[i+step].x<x+tip)
i+=step;
return i;
}
bool cmp(bila a,bila b)
{
return a.x<b.x;
}
int main()
{
int i,j,x,y,q;
in>>n>>m;
for (i=1;i<=n;i++)
in>>v[i].x>>v[i].c;
sort(v+1,v+n+1,cmp);
for (i=1;i<=n;i++)
{
for (j=1;j<=64;j++)
a[i][j]=a[i-1][j];
a[i][v[i].c]++;
}
for (i=1;i<=m;i++)
{
in>>q>>x>>y;
if (!q)
{
v[bs(x,1)].x+=y;
continue;
}
x=bs(x,0);y=bs(y,1);
q=a[y][1]-a[x][1];
for (j=2;j<=64;j++)
if (q<a[y][j]-a[x][j])
q=a[y][j]-a[x][j];
out<<q<<"\n";
}
return 0;
}