Pagini recente » Cod sursa (job #2160241) | Cod sursa (job #1818507) | Cod sursa (job #2129557) | Cod sursa (job #404438) | Cod sursa (job #2518833)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
int n,nrteste,t,indmax;
int f[70][100010],primul,ultimul,sol,st,dr,mid;
pair< int,int > a[10010];
int main(){
fin>>n>>nrteste;
for(int i=1;i<=n;i++){
fin>>a[i].first>>a[i].second;
if(a[i].second>indmax){
indmax=a[i].second;
}
}
sort(a+1, a+n+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=indmax;j++){
if(j==a[i].second){
f[j][i]=1+f[j][i-1];
}
else{
f[j][i]=f[j][i-1];
}
}
}
for(int k=1;k<=nrteste;k++){
int i,j;
fin>>t>>i>>j;
if(t==0){
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(a[mid].first==i){
break;
}
if(a[mid].first<i){
st=mid+1;
}else{
dr=mid-1;
}
}
if(st<=dr){
a[mid].first+=j;
}
}
if(t==1){
sol=0;
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(a[mid].first<i){
st=mid+1;
}else{
dr=mid-1;
}
}
primul=st;
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(a[mid].first<=j){
st=mid+1;
}else{
dr=mid-1;
}
}
ultimul=dr;
for(int ii=1;ii<=indmax; ii++){
sol=max(sol, f[ii][ultimul]-f[ii][primul-1]);
}
fout<<sol<<"\n";
}
}
}