CSES Problem Set
Coin Piles
You have two coin piles containing and coins. On each move, you can either remove one coin from the left pile and two coins from the right pile, or two coins from the left pile and one coin from the right pile.
Your task is to efficiently find out if you can empty both the piles.
Input
The first input line has an integer : the number of tests.
After this, there are lines, each of which has two integers and : the numbers of coins in the piles.
Output
For each test, print "YES" if you can empty the piles and "NO" otherwise.
Constraints
Input:
Output:
Your task is to efficiently find out if you can empty both the piles.
Input
The first input line has an integer : the number of tests.
After this, there are lines, each of which has two integers and : the numbers of coins in the piles.
Output
For each test, print "YES" if you can empty the piles and "NO" otherwise.
Constraints
Input:
3
2 1
2 2
3 3
Output:
YES
NO
YES
#include <bits/stdc++.h>
using namespace std;
#define int long long int#define F first#define S second#define pb push_back#define si set <int>#define vi vector <int>#define pii pair <int, int>#define vpi vector <pii>#define vpp vector <pair<int, pii>>#define mii map <int, int>#define mpi map <pii, int>#define spi set <pii>#define endl "\n"#define sz(x) ((int) x.size())#define all(p) p.begin(), p.end()#define double long double#define que_max priority_queue <int>#define que_min priority_queue <int, vi, greater<int>>#define bug(...) __f (#__VA_ARGS__, __VA_ARGS__)#define print(a) for(auto x : a) cout << x << " "; cout << endl#define print1(a) for(auto x : a) cout << x.F << " " << x.S << endl#define print2(a,x,y) for(int i = x; i < y; i++) cout<< a[i]<< " "; cout << endl
inline int power(int a, int b){ int x = 1; while (b) { if (b & 1) x *= a; a *= a; b >>= 1; } return x;}
template <typename Arg1>void __f (const char* name, Arg1&& arg1) { cout << name << " : " << arg1 << endl; }template <typename Arg1, typename... Args>void __f (const char* names, Arg1&& arg1, Args&&... args){ const char* comma = strchr (names + 1, ','); cout.write (names, comma - names) << " : " << arg1 << " | "; __f (comma + 1, args...);}
const int N = 200005;
void solve() {
int a,b;cin>>a>>b;if(b>a)swap(a,b);if(a>2*b || (a+b)%3!=0)cout<<"NO\n";else cout<<"YES\n";
}
int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
clock_t z = clock();
int t = 1; cin >> t; while (t--) solve();
return 0;}
0 Comments
If you have any doubts/suggestion/any query or want to improve this article, you can comment down below and let me know. Will reply to you soon.