Help me in solving INCREAR problem

My issue

This code is working fine, but in the else condition, why it is giving wrong answer when I write (ceil(diff/2.0) + 1) instead of (diff/2 + 2) ?? The logic is same, then why answer is wrong? Please explain me with some example test case or something.

My code

#include <bits/stdc++.h>
using namespace std;

int main() {

	int t;
	cin>>t;

	while(t--){
	    
	    int x,y;
	    cin>>x>>y;

	    int diff = x - y;

	    if(diff <= 0){
	        cout<<y - x<<endl;
	    }
	    else if(diff % 2 == 0){
	        cout<<diff/2<<endl;
	    }
	    else{
	        cout<<diff/2 + 2<<endl;
	    }
	}

	return 0;
}

Problem Link: INCREAR Problem - CodeChef

@smeet8267 Just take long int instead of int u can get integer overflow error .

@dpcoder_007 I used Long here, still getting wrong answer for the last test case. Kindly review it.

#include <bits/stdc++.h>
using namespace std;

int main() {

	int t;
	cin>>t;

	while(t--){

	    long x,y;
	    cin>>x>>y;

	    long diff = x - y;

	    if(diff <= 0){
	        cout<<y - x<<endl;
	    }
	    else{
	        cout<<ceil(diff/2.0) + diff%2<<endl;
	    }
	}

	return 0;
}

@smeet8267
Just do it like this to avoid overflow.

#include <bits/stdc++.h>
using namespace std;

int main() {

	int t;
	cin>>t;

	while(t--){

	    long int x,y;
	    cin>>x>>y;

	    long int diff = x - y;

	    if(diff <= 0){
	        cout<<y - x<<endl;
	    }
	    else{
	        long int ans=ceil(diff*1.0/2.0) + diff%2; 
	        cout<<ans<<endl;
	    }
	}

	return 0;
}

You used 2.0(which is floating point number)
If you use 2 which is an integer then all test cases may pass