题目链接:http://abc055.contest.atcoder.jp/tasks/arc069_a?lang=en
C - Scc Puzzle
Time limit : 2sec / Memory limit : 256MB
Score : 300 points
Problem Statement
Snuke loves puzzles.
Today, he is working on a puzzle using S
- and c
-shaped pieces. In this puzzle, you can combine two c
-shaped pieces into one S
-shaped piece, as shown in the figure below:

Snuke decided to create as many Scc
groups as possible by putting together one S
-shaped piece and two c
-shaped pieces.
Find the maximum number of Scc
groups that can be created when Snuke has N S
-shaped pieces and M c
-shaped pieces.
Constraints
- 1≤N,M≤1012
Input
The input is given from Standard Input in the following format:
N M
Output
Print the answer.
Sample Input 1
1 6
Sample Output 1
2
Two Scc
groups can be created as follows:
- Combine two
c
-shaped pieces into oneS
-shaped piece - Create two
Scc
groups, each from oneS
-shaped piece and twoc
-shaped pieces
Sample Input 2
12345 678901
Sample Output 2
175897
题意:输入n个S, m个C,一个S可以由2个C组成,求一共有多少个Scc
解析:先把S与C配对,剩下的C/4 + S的个数就是答案
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
#define N 1009
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long LL;
LL fun(LL n, LL m)
{
if((m / 2) < n) return m / 2;
LL ans = n;
m = m - n * 2;
ans = ans + m / 4;
return ans;
}
int main()
{
LL n, m;
scanf("%lld%lld", &n, &m);
LL ans = fun(n, m);
printf("%lld\n", ans);
return 0;
}