Problem:
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 ≤ 10^{12}

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 one S-shaped piece

Create two Scc groups, each from one S-shaped piece and two c-shaped pieces

Sample Input 2

12345 678901

Sample Output 2

175897

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

long long int henkan(char*);

int main(){
	long long int s,c;
	char* str;
	char* data;
	int i = 0;
	int j = 0;

	data = (char*)calloc(100,sizeof(char));
	str = (char*)calloc(100,sizeof(char));
	fgets(str,100,stdin);

	while( str[i] != ' ' ){
		data[i] = str[i];
		i++;
	}
	data[i] = '\0';
	s = henkan(data);

	i++;
	while( str[i] != '\0' && str[i] != '\n' ){
		data[j] = str[i];
		i++;
		j++;
	}
	data[j] = '\0';
	c = henkan(data);

	c /= 2;

	if( s >= c ){
		printf("%lld\n",c);
	}else{
		c -= s;
		c /= 2;
		printf("%lld\n",s+c);
	}

	return 0;
}

long long int henkan( char* str ){
	int i;
	long long int data = 0;
	long long int keta = 1;
	char* tmp;

	tmp = (char*)calloc(2,sizeof(char));
	tmp[1] = '\0';

	i = strlen(str) - 1;

	while( i >= 0 ){
		tmp[0] = str[i];
		data += (long long int)atoi(tmp)*keta;
		keta *= 10;
		i--;
	}

	return data;
}