#!/usr/bin/python3 from fractions import Fraction NIC = "N" TRIDA = "T" # Potřebujeme TRIDA < SRAZKA SRAZKA = "X" NIKDY = 1000000000 ted = 0 class Student: def __init__(self, p, r): self.p = p self.r = r self.co = NIC self.kdy = NIKDY def __repr__(self): return "({} {} {}@{:.3f})".format(self.p, self.r, self.co, float(self.kdy)) D, S = map(int, input().split()) studenti = [] for _ in range(S): p, r = map(int, input().split()) studenti.append(Student(p, r)) studenti.sort(key = lambda s: s.p) # Pro i-tého studenta v seznamu přepočítá příští událost def prepocitej(i): if i < 0 or i >= len(studenti): return si = studenti[i] co = NIC if si.r < 0: j = i-1 else: j = i+1 if j < 0: # Doběhne na začátek kdy = -Fraction(si.p) / Fraction(si.r) co = TRIDA elif j >= len(studenti): # Doběhne na konec kdy = Fraction(D - si.p) / Fraction(si.r) co = TRIDA else: # Srazí se se sousedem sj = studenti[j] if si.r != sj.r: kdy = Fraction(sj.p - si.p) / Fraction(si.r - sj.r) if kdy >= ted: if si.r*sj.r > 0 or si.r > 0: co = SRAZKA if co == NIC: kdy = NIKDY si.kdy = kdy si.co = co # print("{}: {} at {} ({})".format(i, co, kdy, float(kdy))) for i in range(S): prepocitej(i) kolik_uteklo = 0 while studenti: i = min(range(len(studenti)), key = lambda i: (studenti[i].kdy, studenti[i].co)) si = studenti[i] ted, co = si.kdy, si.co if co == TRIDA: kolik_uteklo += 1 studenti.pop(i) if i == 0: prepocitej(i) else: prepocitej(len(studenti)-1) elif co == SRAZKA: if si.r > 0: j = i + 1 else: j = i - 1 sj = studenti[j] if abs(si.r) > abs(sj.r): i = j studenti.pop(i) prepocitej(i-1) prepocitej(i) print(kolik_uteklo)