Cod sursa(job #2012198)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 18 august 2017 11:44:35
Problema Marbles Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
#include <algorithm>
#define f first
#define s second

using namespace std;

int n,i,f[70],j,maxim,maxim2,minim,m,x,y,z,p,u,m2;
pair <int, int> v[100001];

ifstream fin ("marbles.in");

ofstream fout ("marbles.out");

int main (){

    fin>>n>>m2;
    for (i=1;i<=n;i++){
        fin>>v[i].f>>v[i].s;
    }
    sort (v+1,v+n+1);
    for (i=1;i<=m2;i++){
        fin>>x>>y>>z;
        if (x == 0){
            // bila de coordonata y se face y+z;
            p = 1;
            u = n;
            while (p<=u){
                m = (p+u)/2;
                if (v[m].f == y){
                    v[m].f= y+z;
                    break;
                }
                else{
                    if (v[m].f < y)
                        p = m+1;
                    else
                        u = m-1;
                }
            }

        }
        else{
            // coordonate intre y si z, inclusiv;
            maxim = 0;
            minim = 70;
            for (j=1;j<=n;j++)
                if (v[j].f >= y && v[j].f <= z){
                    f[v[j].s] ++;
                    if (v[j].s < minim)
                        minim = v[j].s;
                    if (v[j].s > maxim)
                        maxim = v[j].s;
                }
            maxim2 = 0;
            for (j=minim;j<=maxim;j++){
                if (f[j] > maxim2)
                    maxim2 = f[j];
                f[j] = 0;
            }
            fout<<maxim2<<"\n";

        }
    }

    return 0;
}