Cod sursa(job #205171)

Utilizator AthanaricCirith Gorgor Athanaric Data 29 august 2008 16:49:46
Problema Marbles Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
int max,col[64][100000],poz[100005],n,m,i,j,k,c1,c2,b,s,d,mij,x1,x2;
int main()
{
	freopen("marbles.in","r",stdin);
	freopen("marbles.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (i=1; i<=n; i++)
	{
		scanf("%d%d",&poz[i],&k);
		for (j=i; j<=n; j++)
		col[k][j]++;
	}
	
	for (i=1; i<=m; i++)
	{
		scanf("%d%d%d",&b,&c1,&c2);
		if (b==0)
		{
			s=1; d=n;
			while (s<d)
			{
				mij=(s+d)/2;
				if (poz[mij]==c1)
				s=d+1;
				if (poz[mij]<c1)
				s=mij+1;
				if (poz[mij]>c1)
					d=mij;
			}
			poz[mij]=poz[mij]+c2;
		}
		if (b==1)
		{
			s=1; d=n; 
			while (s<d)
			{
				mij=(s+d)/2;
				if (poz[mij]<c1)
					s=mij+1;
				else
					d=mij;
			}
			x1=s;
			
			s=1; d=n; 
			while (s<d)
			{
				mij=(s+d)/2;
				if (poz[mij]<c2)
					s=mij+1;
				else
					d=mij;
			}
			x2=s-1;
			
			max=0;
			for (j=1; j<64; j++)
				if (col[j][x2]-col[j][x1-1]>max)
					max=col[j][x2]-col[j][x1-1];
			printf("%d\n",max);
		}	
	}
}