Pagini recente » Cod sursa (job #2316495) | Cod sursa (job #1520694) | Cod sursa (job #295585) | Cod sursa (job #992236) | Cod sursa (job #264530)
Cod sursa(job #264530)
#include<iostream.h>
#include<stdio.h>
FILE *f=fopen("marbles.in","r"),*g=fopen("marbles.out","w");
long n,m,op,x,y,mij,i1,j1,i;
struct {long poz;int culoare;} a[1000000],aux;
void qsort(long st,long dr)
{
long i=st,j=dr,mij=a[(st+dr)/2].poz;
do
{
while(i<=j&&a[i].poz<mij) i++;
while(i<=j&&a[j].poz>mij) j--;
if(i<=j)
{
aux=a[i];a[i]=a[j];a[j]=aux;
i++;j--;
}
}while(i<=j);
if(i<dr) qsort(i,dr);
if(st<j) qsort(st,j);
}
void search(long x)
{
i1=1;j1=n;
while(i1<j1)
{
mij=(i1+j1)/2;
if(a[mij].poz==x) break;
else
if(x<a[mij].poz) j1=mij-1;
else
i1=mij+1;
}
}
int main()
{
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%ld%d",&a[i].poz,&a[i].culoare);
qsort(1,n);
for(i=1;i<=m;i++)
{
fscanf(f,"%ld%ld%ld",&op,&x,&y);
if(!op)
{
search(x);
a[mij].poz=x+y;
}
else
{
long max=0,x2,y2,nr;
search(x);x2=mij;if(a[mij].poz!=x) x2=mij+1;
search(y);y2=mij;if(a[mij].poz!=y) y2=mij-1;
if(x2>y2) fprintf(g,"0\n",max);else{
for(i1=1;i1<=64;i1++)
{
nr=0;
for(j1=x2;j1<=y2;j1++)
if(a[j1].culoare==i1) nr++;
if(nr>max) max=nr;
}
fprintf(g,"%ld\n",max);}
}
}
return 0;
}