Cod sursa(job #1006104)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 6 octombrie 2013 13:28:30
Problema Marbles Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,sum[65][100100],X[100100],sol;
struct Bila{
	int x,color;
	bool operator <(const Bila &A) const
	{
		return x<A.x;
	}
};
Bila v[100100];

int main()
{
	int i,j,c,op,poz,st,dr;
	freopen("marbles.in","r",stdin);
	freopen("marbles.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++)
		scanf("%d %d",&v[i].x,&v[i].color);
	sort(v+1,v+n+1);
	for(i=1;i<=n;i++)
	{
		for(c=1;c<=64;c++)
			sum[c][i]=sum[c][i-1];
		sum[v[i].color][i]++;
		X[i]=v[i].x;
	}
	while(m--)
	{
		scanf("%d %d %d",&op,&i,&j);
		if(op==0)
		{
			poz=lower_bound(X+1,X+n+1,i)-X;
			X[poz]+=j;
		}
		else
		{
			st=lower_bound(X+1,X+n+1,i)-X;
			dr=upper_bound(X+st,X+n+1,j)-X-1;
			sol=0;
			for(c=1;c<=64;c++)
				sol=max(sol,sum[c][dr]-sum[c][st-1]);
			printf("%d\n",sol);
		}
	}
	return 0;
}