Cod sursa(job #1166787)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 3 aprilie 2014 20:21:02
Problema Marbles Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("marbles.in");
ofstream fout("marbles.out");
int n,m,i,j,ok,minim,maxim,st,dr;
pair <int,int> v[100010];
int a[66][100010],k,t,x,y,z,mid;
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>v[i].first>>v[i].second;
        for(j=1;j<=64;j++){
            if(v[i].second==j)
                a[j][i]=a[j][i-1]+1;
        }
    }
    for(k=1;k<=m;k++){
        fin>>x>>y>>z;
        if(x==0){
            st=1;
            dr=n;
            while(st<=dr){
                mid=st+(dr-st)/2;
                if(v[mid].first==y)
                    break;
                if(v[mid].first>y)
                    dr=mid-1;
                else
                    st=mid+1;
            }
            v[mid].first+=z;
        }
        if(x==1){
            maxim=0;
            st=1;
            dr=n;
            while(st<=dr){
                mid=st+(dr-st)/2;
                if(v[mid].first>=z)
                    dr=mid-1;
                else
                    st=mid+1;
            }
            for(i=1;i<=64;i++){
                if(maxim<a[i][st])
                    maxim=a[i][st];
            }
            fout<<maxim<<"\n";
        }
    }
    return 0;
}