Cod sursa(job #1006098)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 6 octombrie 2013 13:25:40
Problema Marbles Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<fstream>
#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;
	ifstream fin("marbles.in");
	ofstream fout("marbles.out");
	fin>>n>>m;
	for(i=1;i<=n;i++)
		fin>>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--)
	{
		fin>>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+1,X+n+1,j)-X-1;
			sol=0;
			for(c=1;c<=64;c++)
				sol=max(sol,sum[c][dr]-sum[c][st-1]);
			fout<<sol<<"\n";
		}
	}
	fin.close();
	fout.close();
	return 0;
}