Pagini recente » Monitorul de evaluare | Cod sursa (job #261714) | Monitorul de evaluare | Statistici Beldi Darius Vlad (dariusvlad) | Cod sursa (job #1386136)
#include <fstream>
#include <algorithm>
#define nmax 100005
#define kmax 66
using namespace std;
ifstream f("marbles.in");
ofstream g("marbles.out");
int n,m,v[kmax][nmax];
struct marb{unsigned int a;unsigned int k;};
marb t[nmax];
int cautbin(int x)
{
int p=0;
for (int i=1<<15;i;i>>=1)
if (p+i<=n&&x>=t[p+i].a)
p+=i;
return p;
}
bool cmp(const marb &e,const marb &r)
{
return e.a<r.a;
}
int main()
{
int i,j,op,p,q;
int x,y,sol;
f>>n>>m;
for (i=1;i<=n;i++)
f>>t[i].a>>t[i].k;
sort(t+1,t+n+1,cmp);
for (i=1;i<=n;i++) {
for (j=1;j<kmax;j++)
v[i][j]=v[i-1][j];
v[i][t[i].k]++;
}
for (i=1;i<=m;i++) {
f>>op>>p>>q;
if (op==0) {
x=cautbin(p);
if (t[x].a==p)
t[x].a+=q;
continue;
}
x=cautbin(p);
if (x>=1&&t[x].a==p)
x--;
y=cautbin(q);
sol=0;
for (j=1;j<kmax;j++)
sol=max(sol,v[y][j]-v[x][j]);
g<<sol<<'\n';
}
return 0;
}