Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize ("O3")
- #pragma GCC target ("sse4")
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- typedef complex<ld> cd;
- typedef pair<int, int> pi;
- typedef pair<ll,ll> pl;
- typedef pair<ld,ld> pd;
- typedef vector<int> vi;
- typedef vector<ld> vd;
- typedef vector<ll> vl;
- typedef vector<pi> vpi;
- typedef vector<pl> vpl;
- typedef vector<cd> vcd;
- #define FOR(i, a, b) for (int i=a; i<(b); i++)
- #define F0R(i, a) for (int i=0; i<(a); i++)
- #define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
- #define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
- #define sz(x) (int)(x).size()
- #define mp make_pair
- #define pb push_back
- #define f first
- #define s second
- #define lb lower_bound
- #define ub upper_bound
- #define all(x) x.begin(), x.end()
- #define ins insert
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- const int MOD = 1000000007;
- const char nl = '\n';
- const int MX = 100001; //check the limits, dummy
- void solve() {
- ll X, Y; cin >> X >> Y;
- string ans = "";
- F0Rd(cap, 36) {
- ll A = X, B = Y;
- string cur = "";
- F0Rd(i, cap) {
- if (abs(A) > abs(B) && A > 0) {
- cur += 'E';
- A -= (1ll << i);
- } else if (abs(A) > abs(B) && A < 0) {
- cur += 'W';
- A += (1ll << i);
- } else if (B > 0) {
- cur += 'N';
- B -= (1ll << i);
- } else {
- cur += 'S';
- B += (1ll << i);
- }
- }
- if (A == 0 && B == 0) {
- reverse(all(cur)); ans = cur;
- }
- }
- if (ans == "") {
- cout << "IMPOSSIBLE" << nl;
- } else {
- cout << ans << nl;
- }
- }
- int main() {
- ios_base::sync_with_stdio(0); cin.tie(0);
- int T; cin >> T;
- FOR(i, 1, T+1) {
- cout << "Case #" << i << ": ";
- solve();
- }
- return 0;
- }
- // read the question correctly (ll vs int)
- // template by bqi343
Advertisement
Add Comment
Please, Sign In to add comment