# PBinfo #1594 – Maraton – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

După ce și-a cumpărat biscuiți, Costy, eroul nostru, ajunge acasă și se apucă de teme. Astfel, dă peste următoarea problemă:

“La o probă de maraton participă N maratonişti. Ştiind că la secunda 0, un maratonist se află la Xi metri de linia de sosire și aleargă cu o viteză de Yi metri/secundă, să se răspundă la Q întrebări de tipul:


Câți maratonişti au trecut linia de sosire după Qi secunde ? “

Cerința
Ajutați-l pe Costy să răspundă la cele Q întrebări.

Date de intrare
Fișierul maraton.in conține:


pe prima linie numărul N, reprezentând numărul de maratoniști;
pe următoarele N linii, câte 2 numere, Xi Yi, reprezentând distanța fată de linia de sosire și viteza fiecărui maratonist;
pe următoarea linie, numărul Q reprezentând numărul de întrebări;
pe următoarele Q linii se află câte un număr Qi reprezentând întrebarea i;

Date de ieșire
Fișierul de ieșire maraton.out conţine:

Q linii, linia i reprezentând răspunsul la întrebarea i;


Restricții și precizări

1 <= N, Q, Qi, Xi <= 100 000
1 <= Yi <= 1000

Exemplu:
maraton.in

5
100 4
12 3
101 5 
20 1
44 7
4
20
12
7
21
maraton.out

3
2
2
4
Explicație

La secunda 20 au trecut linia de sosire maratoniștii cu indicii 2, 4, 5.
La secunda 12 au trecut linia de sosire maratoniștii cu indicii 2, 5.
La secunda 7 au trecut linia de sosire maratoniștii cu indicii 2, 5.
La secunda 21 au trecut linia de sosire maratoniștii cu indicii 2, 3, 4, 5.

## Cod sursă C++

```cpp
//Dragan Andrei Gabriel
//Univesity of Bucharest
#include <cstdio>
#include <cstring>
int n, sum[100001], X, Y, Q;
int main()
{
    freopen("maraton.in", "r", stdin);
    freopen("maraton.out", "w", stdout);
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        {
            scanf("%d %d", &X, &Y);
            int aux = X / Y + (X % Y > 0);
            sum[aux] += 1;
        }
    for (int i = 1; i <= 100000; i++)
        sum[i] = sum[i] + sum[i - 1];
    scanf("%d", &Q);
    for (int i = 1; i <= Q; i++)
    {
        scanf("%d", &X);
        printf("%d\n", sum[X]);
    }
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1594)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1594/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1594/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
