VOLCONTROL - Editorial

PROBLEM LINK:

Contest Division 1
Contest Division 2
Contest Division 3
Contest Division 4

Setter: Jeevan Jyot Singh
Tester: Ashley Khoo, Nishant Shah
Editorialist: Prakhar Kochar

DIFFICULTY:

Cakewalk

PREREQUISITES:

None

PROBLEM:

Chef is watching TV. The current volume of the TV is X. Pressing the volume up button of the TV remote increases the volume by 1 while pressing the volume down button decreases the volume by 1. Chef wants to change the volume from X to Y. Find the minimum number of button presses required to do so.

EXPLANATION:

We are given that current volume of the TV is X. Since Chef wants to change the volume from X to Y, following 3 cases are possible :

  • X \gt Y ; Chef can use volume down button (X-Y) times to change the volume from X to Y
  • X \lt Y; Chef can use volume up button (Y-X) times to change the volume from X to Y
  • X = Y; No button press required
Examples
  • X = 10, Y = 20 ; Since 10 < 20, Chef can use volume up button (20 - 10) = 10 times to change the volume from 10 to 20.

  • X = 8, Y = 5; Since 8 \gt 5, Chef can use volume down button (8 - 5 ) = 3 times to change the volume from 8 to 5.

  • X = 15, Y = 15; No button press required therefore output 0.

TIME COMPLEXITY:

O(1) for each test case.

SOLUTION:

Tester-1's Solution
	// Super Idol的笑容
	//    都没你的甜
	//  八月正午的阳光
	//    都没你耀眼
	//  热爱105°C的你
	// 滴滴清纯的蒸馏水
	
	#include <bits/stdc++.h>
	#include <ext/pb_ds/assoc_container.hpp>
	#include <ext/pb_ds/tree_policy.hpp>
	#include <ext/rope>
	using namespace std;
	using namespace __gnu_pbds;
	using namespace __gnu_cxx;
	
	#define int long long
	#define ll long long
	#define ii pair<ll,ll>
	#define iii pair<ii,ll>
	#define fi first
	#define se second
	#define endl '\n'
	#define debug(x) cout << #x << ": " << x << endl
	
	#define pub push_back
	#define pob pop_back
	#define puf push_front
	#define pof pop_front
	#define lb lower_bound
	#define ub upper_bound
	
	#define rep(x,start,end) for(auto x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--))
	#define all(x) (x).begin(),(x).end()
	#define sz(x) (int)(x).size()
	
	#define indexed_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update>
	//change less to less_equal for non distinct pbds, but erase will bug
	
	mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
	
	int a,b;
	
	signed main(){
		ios::sync_with_stdio(0);
		cin.tie(0);
		cout.tie(0);
		cin.exceptions(ios::badbit | ios::failbit);
		
		int TC;
		cin>>TC;
		while (TC--){
			cin>>a>>b;
			cout<<abs(a-b)<<endl;
		}
	}
Tester-2's Solution
#include <bits/stdc++.h>
using namespace std;

/*
---------Input Checker(ref : https://pastebin.com/Vk8tczPu )-----------
*/

long long readInt(long long l, long long r, char endd)
{
    long long x = 0;
    int cnt = 0;
    int fi = -1;
    bool is_neg = false;
    while (true)
    {
        char g = getchar();
        if (g == '-')
        {
            assert(fi == -1);
            is_neg = true;
            continue;
        }
        if ('0' <= g && g <= '9')
        {
            x *= 10;
            x += g - '0';
            if (cnt == 0)
            {
                fi = g - '0';
            }
            cnt++;
            assert(fi != 0 || cnt == 1);
            assert(fi != 0 || is_neg == false);

            assert(!(cnt > 19 || (cnt == 19 && fi > 1)));
        }
        else if (g == endd)
        {
            if (is_neg)
            {
                x = -x;
            }

            if (!(l <= x && x <= r))
            {
                cerr << l << ' ' << r << ' ' << x << '\n';
                assert(1 == 0);
            }

            return x;
        }
        else
        {
            assert(false);
        }
    }
}
string readString(int l, int r, char endd)
{
    string ret = "";
    int cnt = 0;
    while (true)
    {
        char g = getchar();
        assert(g != -1);
        if (g == endd)
        {
            break;
        }
        cnt++;
        ret += g;
    }
    assert(l <= cnt && cnt <= r);
    return ret;
}
long long readIntSp(long long l, long long r)
{
    return readInt(l, r, ' ');
}
long long readIntLn(long long l, long long r)
{
    return readInt(l, r, '\n');
}
string readStringLn(int l, int r)
{
    return readString(l, r, '\n');
}
string readStringSp(int l, int r)
{
    return readString(l, r, ' ');
}

/*
-------------Main code starts here------------------------
*/

// Note here all the constants from constraints
const int MAX_T = 100;
const int MAX_VAL = 100;

// vars

void solve()
{
    int x, y, z;
    x = readIntSp(1, MAX_VAL);
    y = readIntLn(1, MAX_VAL);

    int answer = abs(x - y);
    cout << answer << '\n';
}

signed main()
{
    int t;
    t = readIntLn(1, MAX_T);

    for (int i = 1; i <= t; i++)
    {
        solve();
    }

    // Make sure there are no extra characters at the end of input
    assert(getchar() == -1);
    cerr << "SUCCESS\n";

    // Some important parameters which can help identify weakness in testdata
    cerr << "Tests : " << t << '\n';
}
Editorialist's Solution
/*prakhar_87*/
#include <bits/stdc++.h>
using namespace std;

#define int long long int
#define inf INT_MAX
#define mod 998244353

void f() {
    int x,y;
    cin>>x>>y;
    cout<<abs(x-y)<<"\n";
}

int32_t main() {
    ios::sync_with_stdio(0); cin.tie(0);
    int t; cin >> t;
    while (t--) f();
}