Pagini recente » Cod sursa (job #618226) | Cod sursa (job #1295530) | Cod sursa (job #2483551) | Cod sursa (job #897388) | Cod sursa (job #2535884)
#include <fstream>
using namespace std;
ifstream in("marbles.in");
ofstream out("marbles.out");
const int N=100000;
int aib[65][N+1],cul[N+1];
int lsb(int x)
{
return x&-x;
}
void update(int care,int poz,int val)
{
for(; poz<=N; poz+=lsb(poz))
aib[care][poz]+=val;
}
int ask(int care,int poz)
{
int sum=0;
for(; poz>0; poz-=lsb(poz))
sum+=aib[care][poz];
return sum;
}
int main()
{
int n,m,max1=0,i,j,a,b,t;
in>>n>>m;
for(i=1; i<=n; i++)
{
in>>a>>b;
cul[a]=b;
update(b,a,1);
}
for(i=1; i<=m; i++)
{
in>>t>>a>>b;
if(t==0)
{
cul[a+b]=cul[a];
cul[a]=0;
update(cul[a+b],a+b,1);
update(cul[a+b],a,-1);
}
else
{
max1=0;
for(j=1; j<=64; j++)
max1=max(max1,ask(j,b)-ask(j,a-1));
out<<max1<<'\n';
}
}
return 0;
}