Pagini recente » Cod sursa (job #62756) | Cod sursa (job #2011699) | Cod sursa (job #2260114) | Cod sursa (job #693946) | Cod sursa (job #164639)
Cod sursa(job #164639)
#include<stdio.h>
struct aa {int a; char b;};
aa s[1000],aux;
int q,w,k,p,n,i,m1,j,c[65][100],t,a,b,x,y,max;;
void sort(){
int c,p;
for(i=2;i<=k;i++){
c=i;
p=c>>1;
while((p)&&(s[c].b>s[p].b)){
aux=s[c];
s[c]=s[p];
s[p]=aux;
c=p;
p=c>>1;
}
}
for(i=k;i>1;i--){
aux=s[i];
s[i]=s[1];
s[1]=aux;
p=1;
c=p<<1;
k--;
while(c<=k){
if((s[c].b<s[c+1].b)&&c<k){c++;}
if(s[p].b<s[c].b){
aux=s[p];
s[p]=s[c];
s[c]=aux;
p=c;
c=p<<1;
}
else{break;}
}
}
}
int binar (int sol){
int p,u,mij;
p=1;
u=n;
while(p<=u){
mij=(p+u)/2;
if(s[mij].a>=sol)
u=mij-1;
else
p=mij+1;
}
return p;
}
int main(){
FILE *f=fopen("marbles.in","r");
fscanf(f,"%d %d",&n,&m1);
for(i=1;i<=n;i++){
fscanf(f,"%d %d",&s[i].a,&s[i].b);
}
k=n;
//sort();
for(i=1;i<=n;i++){
for(j=1;j<=64;j++)
c[j][i]=c[j][i-1];
c[ s[i].b ] [i]++;
}
FILE *g=fopen("marbles.out","w");
for(i=1;i<=m1;i++){
fscanf(f,"%d %d %d",&t,&a,&b);
if(t==0){
x = binar(a);
s[x].a=b+a;
}
else{
x = binar(a);
y = binar(b);
if(s[y].a!=b)
y--;
max=0;
for(j=1;j<=64;j++){
q=c[j][y];
if(j==s[x].b)
w=c[j][x]-1;
else
w=c[j][x];
if(q-w>max){
max=q-w;
}
}
fprintf(g,"%d\n",max);
}
}
fclose(f);
fclose(g);
return 0;
}