Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define loop(i,b,e) for(int i=b;i<=e;i++)
- #define loop2(i,e,b) for(int i=e;i>=b;i--)
- typedef long long ll;
- typedef unsigned long long ull;
- int n;
- int ans = 1e6;
- int m[5][5];
- void solve(int x,int y,int curr) {
- if (ans == n)
- return;
- if (abs(curr - n) < abs(ans - n) || curr==n)
- ans = curr;
- if (x>=4 || y>=3 || (x==3 && y==0) || (x == 3 && y == 2))
- return;
- solve(x + 1, y, curr);
- solve(x, y + 1, curr);
- int prev = 1e9;
- int prev2 = abs(curr - n);
- while(curr<n && prev!=prev2){
- prev = prev2;
- curr = (curr * 10) + m[x][y];
- solve(x + 1, y, curr);
- solve(x, y + 1, curr);
- prev2 = abs(curr - n);
- }
- }
- int main() {
- scanf("%d",&n);
- int c = 1;
- loop(i, 0, 3)
- loop(j, 0, 2) {
- m[i][j] = c;
- c++;
- }
- m[3][0] = 1e6;
- m[3][1] = 0;
- m[3][2] = 1e6;
- solve(0,0,0);
- printf("%d",ans);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement