Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <algorithm>
- #include <cstdint>
- constexpr __uint128_t MOD = 1000000000000000009ull;
- void reverse(char str[], int length)
- {
- int start = 0;
- int end = length -1;
- while (start < end)
- {
- std::swap(*(str+start), *(str+end));
- start++;
- end--;
- }
- }
- char* itoa(__uint128_t num, char* str, int base)
- {
- __uint128_t i = 0;
- bool isNegative = false;
- if (num == 0)
- {
- str[i++] = '0';
- str[i] = '\0';
- return str;
- }
- if (num < 0 && base == 10)
- {
- isNegative = true;
- num = -num;
- }
- while (num != 0)
- {
- __uint128_t rem = num % base;
- str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0';
- num = num/base;
- }
- if (isNegative)
- str[i++] = '-';
- str[i] = '\0';
- reverse(str, i);
- return str;
- }
- __uint128_t sumatoria(__uint128_t x) {
- __uint128_t res = (( x * (x + 1)) / 2 ) % MOD;
- return res;
- }
- int main( )
- {
- std::ios_base::sync_with_stdio(0);
- std::cin.tie(0);
- std::cout.tie(0);
- uint64_t n, q, k;
- std::cin >> n >> q >> k;
- __uint128_t omegas[q];
- for (uint64_t i = 0; i < q; ++i) {
- uint64_t l, d;
- std::cin >> l >> d;
- omegas[i] = ( sumatoria(__uint128_t(d)) - sumatoria(__uint128_t(l - 1)) ) % MOD;
- }
- std::sort(omegas, omegas + q);
- __uint128_t reyes = 0, chavos = 0, tablas = 0;
- for (__uint128_t i = 0; i < k; ++i) {
- uint64_t rey;
- std::cin >> rey;
- auto perdidos = (omegas + q) - std::upper_bound(omegas, omegas + q, __uint128_t(rey));
- auto ganados = std::lower_bound(omegas, omegas + q, __uint128_t(rey)) - omegas;
- auto empates = std::upper_bound(omegas, omegas + q, __uint128_t(rey)) - std::lower_bound(omegas, omegas + q, __uint128_t(rey));
- /**
- std::cout << "empates:" << empates << "\n";
- std::cout << "ganados:" << ganados << "\n";
- std::cout << "perdidos:" << perdidos << "\n";
- std::cout << "\n";
- /**/
- reyes += __uint128_t(ganados);
- tablas += __uint128_t(empates);
- chavos += __uint128_t(perdidos);
- }
- char buffer[1002];
- std::cout << "Chavos :) x " << itoa(chavos, buffer, 10) << "\n";
- std::cout << "Tablas :| x " << itoa(tablas, buffer, 10) << "\n";
- std::cout << "Reyes :( x " << itoa(reyes, buffer, 10) << "\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement