fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 28986 (C++) Погружение в Анимус
최초 업로드: 2025-09-24 06:09:58
최근 수정 시간: 2025-09-24 11:38:36
게시자: rlatjwls3333
카테고리: 백준
조회수: 13
# [Bronze II] Погружение в Анимус [문제 링크](https://www.acmicpc.net/problem/28986) ## 문제 설명 <p>Анимус --- сложная машина, которая считывает генетическую память человека и проецирует ее в 3D.</p> <p>Для простоты будем считать, что у каждой клетки в теле и у каждого события есть свой уникальный код, представимый натуральным числом, алгоритм подсчета которого является собственностью <<Абстерго Индастриз>> и не разглашается. При этом коды клеток нумеруются последовательно.</p> <p>Для того, чтобы считать информацию о событии с кодом $k$, при соединении с телом человека Анимус начинает искать все пары клеток, у которых коды не превосходят число $n$, но при этом в сумме дают число $k$. Так например, при считывании события $3$ и $n$ равном $5$ существует лишь одна подходящая пара состоящая из клеток с кодами $1$ и $2$. Если же при $n$ равном $3$, $k$ будет равно $2$, то ни одной пары не найдется, так как коды клеток не повторяются.</p> <p>Перед тем как провести погружение Каллума Линча в Испанию 1492-го года, доктор София Райлин хочет узнать, сколько пар клеток для считывания информации найдет Анимус. Однако, в Анимусе нет функций по подсчету данной информации, поэтому ваша задача по числам данным числам $n$ и $k$ определить количество пар, состоящих из различных натуральных чисел не превосходящих $n$ и дающих в сумме $k$.</p> ## 입력 <p>В первой строке входного файла содержатся два натуральных числа $n$ и $k$ --- ограничение на код клетки и сумма кодов искомых пар клеток, соответственно ($1 \le n, k, \le 10^{15}$).</p> ## 출력 <p>В единственной строке выходного файла выведите ответ на задачу --- количество пар, состоящих из различных натуральных чисел не превосходящих $n$ и дающих в сумме $k$.</p> ## 풀이 n>k인 경우와 $n\le k$인 경우를 나눠서 출력하면 되지만, max로 합쳐서 구현하였다. ``` c++ #include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ios::sync_with_stdio(0); cin.tie(0); ll n, k; cin >> n >> k; cout << max((k-1)/2 - max(k-n-1, 0LL), 0LL); } ```