Cod sursa(job #3122888)

Utilizator AlexandruBenescuAlexandru Benescu AlexandruBenescu Data 20 aprilie 2023 23:09:21
Problema Hotel Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define L 100005
using namespace std;
ifstream fin("hotel.in");
ofstream fout("hotel.out");

struct MS{
  int sum;
  int secv_max;
  int pref_max;
  int suff_max;
  int count_0;
};

int n, q, x, y, val;
MS aint[L * 4];

inline void update(int node, int le, int ri){
  int mid = (le + ri) / 2;
  if (x > le || y < ri){
    if (x <= mid)
      update(node * 2, le, mid);
    if (mid < y)
      update(node * 2 + 1, mid + 1, ri);
  }
  aint[node].sum += val;
  if (val == 1)
    aint[node].count_0 = 0;
  else
    aint[node].count_0 = ri - le + 1;

}

inline int query(){
  return aint[1].secv_max;
}

int main(){
  fin >> n >> q;
  for (int i = 1; i <= q; i++){
    int t;
    fin >> t;
    if (t == 1){
      fin >> x >> y;
      y += x - 1;
      val = 1;
      update(1, 1, n);
    }
    else if (t == 2){
      fin >> x >> y;
      y += x - 1;
      val = -1;
      update(1, 1, n);
    }
    else{
      fout << query() << "\n";
    }
  }
  return 0;
}