Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Silver Marriage, tunyash@gmail.com
- */
- #include <iostream>
- #include <fstream>
- #include <stack>
- #include <cstdlib>
- #include <cmath>
- #include <string>
- #include <set>
- #include <map>
- #include <vector>
- #include <algorithm>
- #include <ctime>
- #include <cassert>
- #include <stdio.h>
- #include <queue>
- using namespace std;
- #define mp make_pair
- #define pb push_back
- #define gcd(a,b) __gcd(a,b)
- #define forn(i,n) for(int i = 0; i < n; i++)
- #define ford(i,n) for(int i = n - 1; i >= 0; i--)
- #define forab(i,l,r) for(int i = l; i <= r; i++)
- #define forabd(i,r,l) for(int i = r; i >= l; i--)
- #define sqr(x) ((x) * (x))
- #define X first
- #define Y second
- #define FILENAME ""
- const long long base = 1000000000 + 7;
- const long double eps = 1e-9;
- typedef long long ll;
- typedef pair<int, int> pii;
- typedef vector<int> vi;
- int f[11111];
- map <int, pair <int, int> > pos;
- bool ok(int d)
- {
- vector <int> dd;
- while (d)
- {
- dd.push_back(d % 10);
- d /= 10;
- }
- reverse(dd.begin(), dd.end());
- pair <int, int> st = pos[dd[0]];
- for (int i = 1; i < (int)dd.size(); i++)
- {
- pair <int, int> tmp = pos[dd[i]];
- int dx = tmp.first - st.first;
- int dy = tmp.second - st.second;
- if (dx < 0 || dy < 0)
- return false;
- st = tmp;
- }
- return true;
- }
- int solve(){
- int n;
- cin >> n;
- if (f[n] != -1)
- {
- return f[n];
- }
- for (int i = 0; i < n; i++)
- {
- int d = n - i;
- if (ok(d))
- {
- f[n] = d;
- return d;
- }
- d = n + i;
- if (ok(d))
- {
- f[n] = d;
- return d;
- }
- }
- }
- int main(){
- // ios_base :: sync_with_stdio(false);
- // freopen (FILENAME".in", "r", stdin);
- // freopen (FILENAME".out", "w", stdout);
- int test = 1;
- for (int i = 0; i < 3; i++)
- for (int j = 0; j < 3; j++)
- pos[i * 3 + j + 1] = mp(i, j);
- pos[0] = mp(3, 1);
- for (int i = 1; i <= 200; i++)
- f[i] = -1;
- cin >> test;
- while (test--){
- cout << solve() << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement