原题链接:
http://poj.org/problem?id=2718
题意:
给你几个数字,可以分成两个子集,然后分别按一定顺序排列组成一个数,求出这两只值差的绝对值的最小值。
分析:
反正也是刷着玩,果断先交一波全排列枚举的代码,果断TLE,然后开始想正解。
稍微想想,既然要差最小,肯定是两个数各一半。所以只要深搜出所有n/2(n为给定数字的个数)的组合,另外个n-n/2个数就有了。
但是枚举出来后的操作又想了很久,想过很多算法,都不怎么满意,最终用二分解决。
先把n/2和n-n/2全排列,算了出所有可能组成的整数,然后进行二分,分别和最近的作差比较,需要注意特殊处理。
坑点:忘记了单个0需要特殊考虑,导致WA了好几发,马蛋。
最坏时间复杂度(n==10):C(5,10)×(5!×5)×2==302400。跑了32ms。
算是很快了,不过肯定有比我更快的,膜拜各路大神。
代码:
1 #include <iostream> 2 #include <sstream> 3 #include <cstdio> 4 #include <cstring> 5 #include <vector> 6 #include <set> 7 #include <map> 8 #include <algorithm> 9 #include <string> 10 #include <queue> 11 #include <cmath> 12 #include <stack> 13 #include <cctype> 14 #include <list> 15 16 #define ll long long 17 #define ull unsigned long long 18 #define VNAME(name) (#name) 19 #define debug(a) cout<<VNAME(a)<<" = "<<(a)<<endl; 20 21 22 23 using namespace std; 24 25 const int maxn = 110; 26 const int inf = 1 << 30; 27 28 string str; 29 int num[maxn]; 30 int a[maxn],b[maxn];//保存在深搜中组合出的数列 31 bool vis[maxn];//回溯标记 32 int n; 33 int ans; 34 35 //全排列算出每个组成的整数 36 int make_permutation(int x,int *org,int *ne,int *num){ 37 for(int i=0;i<x;i++){ 38 ne[i]=org[i]; 39 } 40 sort(ne,ne+x); 41 int nn=0; 42 do{ 43 if(ne[0]==0)continue;//0前导忽略 44 int p=0; 45 for(int i=0;i<x;i++){ 46 p=p*10+ne[i]; 47 } 48 num[nn++]=p; 49 }while(next_permutation(ne,ne+x)); 50 return nn; 51 } 52 53 void dfs(int x,int pre){ 54 if(x==n/2){ 55 int y=n-n/2;//另一半 56 for(int i=0,j=0;j<y;i++){ 57 if(!vis[i]){ 58 b[j++]=num[i]; 59 } 60 } 61 int ta[11],tb[11];//暂存的a和b 62 int ra[130],rb[130];//保存组成的整数 63 int ran=make_permutation(x,a,ta,ra); 64 int rbn=make_permutation(y,b,tb,rb); 65 for(int i=0;i<ran;i++){ 66 int p=lower_bound(rb,rb+rbn,ra[i])-rb; 67 if(rb[p]==ra[i]){//特殊处理 68 ans=min(ans,0); 69 } 70 else if(p==0){//特殊处理 71 ans=min(ans,abs(rb[p]-ra[i])); 72 } 73 else if(p==rbn){//特殊处理 74 ans=min(ans,abs(rb[p-1]-ra[i])); 75 } 76 else{ 77 ans=min(ans,min(abs(rb[p-1]-ra[i]),abs(rb[p]-ra[i]))); 78 } 79 } 80 return ; 81 } 82 for(int i=pre;i<n;i++){ 83 if(!vis[i]){ 84 vis[i]=1; 85 a[x]=num[i]; 86 dfs(x+1,i+1); 87 vis[i]=0;//回溯 88 } 89 } 90 } 91 92 93 int main() { 94 iostream::sync_with_stdio(false); 95 96 #ifndef ONLINE_JUDGE 97 freopen("data.in","r",stdin); 98 //freopen("data.out","w",stdout); 99 #endif 100 101 int t; 102 cin>>t; 103 cin.get(); 104 while(t--) { 105 getline(cin,str); 106 stringstream ss(str); 107 n=0,ans=inf; 108 memset(vis,0,sizeof(vis)); 109 while(ss>>num[n]){ 110 n++; 111 } 112 //因为小于10的数,单个0不算前导,特殊考虑 113 //并且只有在2个数的时候才会出现这种情况,很容易发现 114 if(n==2){ 115 cout<<abs(num[0]-num[1])<<endl; 116 continue; 117 } 118 dfs(0,0); 119 cout<<ans<<endl; 120 } 121 return 0; 122 }
数据:
//input
1013
9 8
9 7
8 7
9 8 7
9 6
8 6
9 8 6
7 6
9 7 6
8 7 6
9 8 7 6
9 5
8 5
9 8 5
7 5
9 7 5
8 7 5
9 8 7 5
6 5
9 6 5
8 6 5
9 8 6 5
7 6 5
9 7 6 5
8 7 6 5
9 8 7 6 5
9 4
8 4
9 8 4
7 4
9 7 4
8 7 4
9 8 7 4
6 4
9 6 4
8 6 4
9 8 6 4
7 6 4
9 7 6 4
8 7 6 4
9 8 7 6 4
5 4
9 5 4
8 5 4
9 8 5 4
7 5 4
9 7 5 4
8 7 5 4
9 8 7 5 4
6 5 4
9 6 5 4
8 6 5 4
9 8 6 5 4
7 6 5 4
9 7 6 5 4
8 7 6 5 4
9 8 7 6 5 4
9 3
8 3
9 8 3
7 3
9 7 3
8 7 3
9 8 7 3
6 3
9 6 3
8 6 3
9 8 6 3
7 6 3
9 7 6 3
8 7 6 3
9 8 7 6 3
5 3
9 5 3
8 5 3
9 8 5 3
7 5 3
9 7 5 3
8 7 5 3
9 8 7 5 3
6 5 3
9 6 5 3
8 6 5 3
9 8 6 5 3
7 6 5 3
9 7 6 5 3
8 7 6 5 3
9 8 7 6 5 3
4 3
9 4 3
8 4 3
9 8 4 3
7 4 3
9 7 4 3
8 7 4 3
9 8 7 4 3
6 4 3
9 6 4 3
8 6 4 3
9 8 6 4 3
7 6 4 3
9 7 6 4 3
8 7 6 4 3
9 8 7 6 4 3
5 4 3
9 5 4 3
8 5 4 3
9 8 5 4 3
7 5 4 3
9 7 5 4 3
8 7 5 4 3
9 8 7 5 4 3
6 5 4 3
9 6 5 4 3
8 6 5 4 3
9 8 6 5 4 3
7 6 5 4 3
9 7 6 5 4 3
8 7 6 5 4 3
9 8 7 6 5 4 3
9 2
8 2
9 8 2
7 2
9 7 2
8 7 2
9 8 7 2
6 2
9 6 2
8 6 2
9 8 6 2
7 6 2
9 7 6 2
8 7 6 2
9 8 7 6 2
5 2
9 5 2
8 5 2
9 8 5 2
7 5 2
9 7 5 2
8 7 5 2
9 8 7 5 2
6 5 2
9 6 5 2
8 6 5 2
9 8 6 5 2
7 6 5 2
9 7 6 5 2
8 7 6 5 2
9 8 7 6 5 2
4 2
9 4 2
8 4 2
9 8 4 2
7 4 2
9 7 4 2
8 7 4 2
9 8 7 4 2
6 4 2
9 6 4 2
8 6 4 2
9 8 6 4 2
7 6 4 2
9 7 6 4 2
8 7 6 4 2
9 8 7 6 4 2
5 4 2
9 5 4 2
8 5 4 2
9 8 5 4 2
7 5 4 2
9 7 5 4 2
8 7 5 4 2
9 8 7 5 4 2
6 5 4 2
9 6 5 4 2
8 6 5 4 2
9 8 6 5 4 2
7 6 5 4 2
9 7 6 5 4 2
8 7 6 5 4 2
9 8 7 6 5 4 2
3 2
9 3 2
8 3 2
9 8 3 2
7 3 2
9 7 3 2
8 7 3 2
9 8 7 3 2
6 3 2
9 6 3 2
8 6 3 2
9 8 6 3 2
7 6 3 2
9 7 6 3 2
8 7 6 3 2
9 8 7 6 3 2
5 3 2
9 5 3 2
8 5 3 2
9 8 5 3 2
7 5 3 2
9 7 5 3 2
8 7 5 3 2
9 8 7 5 3 2
6 5 3 2
9 6 5 3 2
8 6 5 3 2
9 8 6 5 3 2
7 6 5 3 2
9 7 6 5 3 2
8 7 6 5 3 2
9 8 7 6 5 3 2
4 3 2
9 4 3 2
8 4 3 2
9 8 4 3 2
7 4 3 2
9 7 4 3 2
8 7 4 3 2
9 8 7 4 3 2
6 4 3 2
9 6 4 3 2
8 6 4 3 2
9 8 6 4 3 2
7 6 4 3 2
9 7 6 4 3 2
8 7 6 4 3 2
9 8 7 6 4 3 2
5 4 3 2
9 5 4 3 2
8 5 4 3 2
9 8 5 4 3 2
7 5 4 3 2
9 7 5 4 3 2
8 7 5 4 3 2
9 8 7 5 4 3 2
6 5 4 3 2
9 6 5 4 3 2
8 6 5 4 3 2
9 8 6 5 4 3 2
7 6 5 4 3 2
9 7 6 5 4 3 2
8 7 6 5 4 3 2
9 8 7 6 5 4 3 2
9 1
8 1
9 8 1
7 1
9 7 1
8 7 1
9 8 7 1
6 1
9 6 1
8 6 1
9 8 6 1
7 6 1
9 7 6 1
8 7 6 1
9 8 7 6 1
5 1
9 5 1
8 5 1
9 8 5 1
7 5 1
9 7 5 1
8 7 5 1
9 8 7 5 1
6 5 1
9 6 5 1
8 6 5 1
9 8 6 5 1
7 6 5 1
9 7 6 5 1
8 7 6 5 1
9 8 7 6 5 1
4 1
9 4 1
8 4 1
9 8 4 1
7 4 1
9 7 4 1
8 7 4 1
9 8 7 4 1
6 4 1
9 6 4 1
8 6 4 1
9 8 6 4 1
7 6 4 1
9 7 6 4 1
8 7 6 4 1
9 8 7 6 4 1
5 4 1
9 5 4 1
8 5 4 1
9 8 5 4 1
7 5 4 1
9 7 5 4 1
8 7 5 4 1
9 8 7 5 4 1
6 5 4 1
9 6 5 4 1
8 6 5 4 1
9 8 6 5 4 1
7 6 5 4 1
9 7 6 5 4 1
8 7 6 5 4 1
9 8 7 6 5 4 1
3 1
9 3 1
8 3 1
9 8 3 1
7 3 1
9 7 3 1
8 7 3 1
9 8 7 3 1
6 3 1
9 6 3 1
8 6 3 1
9 8 6 3 1
7 6 3 1
9 7 6 3 1
8 7 6 3 1
9 8 7 6 3 1
5 3 1
9 5 3 1
8 5 3 1
9 8 5 3 1
7 5 3 1
9 7 5 3 1
8 7 5 3 1
9 8 7 5 3 1
6 5 3 1
9 6 5 3 1
8 6 5 3 1
9 8 6 5 3 1
7 6 5 3 1
9 7 6 5 3 1
8 7 6 5 3 1
9 8 7 6 5 3 1
4 3 1
9 4 3 1
8 4 3 1
9 8 4 3 1
7 4 3 1
9 7 4 3 1
8 7 4 3 1
9 8 7 4 3 1
6 4 3 1
9 6 4 3 1
8 6 4 3 1
9 8 6 4 3 1
7 6 4 3 1
9 7 6 4 3 1
8 7 6 4 3 1
9 8 7 6 4 3 1
5 4 3 1
9 5 4 3 1
8 5 4 3 1
9 8 5 4 3 1
7 5 4 3 1
9 7 5 4 3 1
8 7 5 4 3 1
9 8 7 5 4 3 1
6 5 4 3 1
9 6 5 4 3 1
8 6 5 4 3 1
9 8 6 5 4 3 1
7 6 5 4 3 1
9 7 6 5 4 3 1
8 7 6 5 4 3 1
9 8 7 6 5 4 3 1
2 1
9 2 1
8 2 1
9 8 2 1
7 2 1
9 7 2 1
8 7 2 1
9 8 7 2 1
6 2 1
9 6 2 1
8 6 2 1
9 8 6 2 1
7 6 2 1
9 7 6 2 1
8 7 6 2 1
9 8 7 6 2 1
5 2 1
9 5 2 1
8 5 2 1
9 8 5 2 1
7 5 2 1
9 7 5 2 1
8 7 5 2 1
9 8 7 5 2 1
6 5 2 1
9 6 5 2 1
8 6 5 2 1
9 8 6 5 2 1
7 6 5 2 1
9 7 6 5 2 1
8 7 6 5 2 1
9 8 7 6 5 2 1
4 2 1
9 4 2 1
8 4 2 1
9 8 4 2 1
7 4 2 1
9 7 4 2 1
8 7 4 2 1
9 8 7 4 2 1
6 4 2 1
9 6 4 2 1
8 6 4 2 1
9 8 6 4 2 1
7 6 4 2 1
9 7 6 4 2 1
8 7 6 4 2 1
9 8 7 6 4 2 1
5 4 2 1
9 5 4 2 1
8 5 4 2 1
9 8 5 4 2 1
7 5 4 2 1
9 7 5 4 2 1
8 7 5 4 2 1
9 8 7 5 4 2 1
6 5 4 2 1
9 6 5 4 2 1
8 6 5 4 2 1
9 8 6 5 4 2 1
7 6 5 4 2 1
9 7 6 5 4 2 1
8 7 6 5 4 2 1
9 8 7 6 5 4 2 1
3 2 1
9 3 2 1
8 3 2 1
9 8 3 2 1
7 3 2 1
9 7 3 2 1
8 7 3 2 1
9 8 7 3 2 1
6 3 2 1
9 6 3 2 1
8 6 3 2 1
9 8 6 3 2 1
7 6 3 2 1
9 7 6 3 2 1
8 7 6 3 2 1
9 8 7 6 3 2 1
5 3 2 1
9 5 3 2 1
8 5 3 2 1
9 8 5 3 2 1
7 5 3 2 1
9 7 5 3 2 1
8 7 5 3 2 1
9 8 7 5 3 2 1
6 5 3 2 1
9 6 5 3 2 1
8 6 5 3 2 1
9 8 6 5 3 2 1
7 6 5 3 2 1
9 7 6 5 3 2 1
8 7 6 5 3 2 1
9 8 7 6 5 3 2 1
4 3 2 1
9 4 3 2 1
8 4 3 2 1
9 8 4 3 2 1
7 4 3 2 1
9 7 4 3 2 1
8 7 4 3 2 1
9 8 7 4 3 2 1
6 4 3 2 1
9 6 4 3 2 1
8 6 4 3 2 1
9 8 6 4 3 2 1
7 6 4 3 2 1
9 7 6 4 3 2 1
8 7 6 4 3 2 1
9 8 7 6 4 3 2 1
5 4 3 2 1
9 5 4 3 2 1
8 5 4 3 2 1
9 8 5 4 3 2 1
7 5 4 3 2 1
9 7 5 4 3 2 1
8 7 5 4 3 2 1
9 8 7 5 4 3 2 1
6 5 4 3 2 1
9 6 5 4 3 2 1
8 6 5 4 3 2 1
9 8 6 5 4 3 2 1
7 6 5 4 3 2 1
9 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
9 8 7 6 5 4 3 2 1
9 0
8 0
9 8 0
7 0
9 7 0
8 7 0
9 8 7 0
6 0
9 6 0
8 6 0
9 8 6 0
7 6 0
9 7 6 0
8 7 6 0
9 8 7 6 0
5 0
9 5 0
8 5 0
9 8 5 0
7 5 0
9 7 5 0
8 7 5 0
9 8 7 5 0
6 5 0
9 6 5 0
8 6 5 0
9 8 6 5 0
7 6 5 0
9 7 6 5 0
8 7 6 5 0
9 8 7 6 5 0
4 0
9 4 0
8 4 0
9 8 4 0
7 4 0
9 7 4 0
8 7 4 0
9 8 7 4 0
6 4 0
9 6 4 0
8 6 4 0
9 8 6 4 0
7 6 4 0
9 7 6 4 0
8 7 6 4 0
9 8 7 6 4 0
5 4 0
9 5 4 0
8 5 4 0
9 8 5 4 0
7 5 4 0
9 7 5 4 0
8 7 5 4 0
9 8 7 5 4 0
6 5 4 0
9 6 5 4 0
8 6 5 4 0
9 8 6 5 4 0
7 6 5 4 0
9 7 6 5 4 0
8 7 6 5 4 0
9 8 7 6 5 4 0
3 0
9 3 0
8 3 0
9 8 3 0
7 3 0
9 7 3 0
8 7 3 0
9 8 7 3 0
6 3 0
9 6 3 0
8 6 3 0
9 8 6 3 0
7 6 3 0
9 7 6 3 0
8 7 6 3 0
9 8 7 6 3 0
5 3 0
9 5 3 0
8 5 3 0
9 8 5 3 0
7 5 3 0
9 7 5 3 0
8 7 5 3 0
9 8 7 5 3 0
6 5 3 0
9 6 5 3 0
8 6 5 3 0
9 8 6 5 3 0
7 6 5 3 0
9 7 6 5 3 0
8 7 6 5 3 0
9 8 7 6 5 3 0
4 3 0
9 4 3 0
8 4 3 0
9 8 4 3 0
7 4 3 0
9 7 4 3 0
8 7 4 3 0
9 8 7 4 3 0
6 4 3 0
9 6 4 3 0
8 6 4 3 0
9 8 6 4 3 0
7 6 4 3 0
9 7 6 4 3 0
8 7 6 4 3 0
9 8 7 6 4 3 0
5 4 3 0
9 5 4 3 0
8 5 4 3 0
9 8 5 4 3 0
7 5 4 3 0
9 7 5 4 3 0
8 7 5 4 3 0
9 8 7 5 4 3 0
6 5 4 3 0
9 6 5 4 3 0
8 6 5 4 3 0
9 8 6 5 4 3 0
7 6 5 4 3 0
9 7 6 5 4 3 0
8 7 6 5 4 3 0
9 8 7 6 5 4 3 0
2 0
9 2 0
8 2 0
9 8 2 0
7 2 0
9 7 2 0
8 7 2 0
9 8 7 2 0
6 2 0
9 6 2 0
8 6 2 0
9 8 6 2 0
7 6 2 0
9 7 6 2 0
8 7 6 2 0
9 8 7 6 2 0
5 2 0
9 5 2 0
8 5 2 0
9 8 5 2 0
7 5 2 0
9 7 5 2 0
8 7 5 2 0
9 8 7 5 2 0
6 5 2 0
9 6 5 2 0
8 6 5 2 0
9 8 6 5 2 0
7 6 5 2 0
9 7 6 5 2 0
8 7 6 5 2 0
9 8 7 6 5 2 0
4 2 0
9 4 2 0
8 4 2 0
9 8 4 2 0
7 4 2 0
9 7 4 2 0
8 7 4 2 0
9 8 7 4 2 0
6 4 2 0
9 6 4 2 0
8 6 4 2 0
9 8 6 4 2 0
7 6 4 2 0
9 7 6 4 2 0
8 7 6 4 2 0
9 8 7 6 4 2 0
5 4 2 0
9 5 4 2 0
8 5 4 2 0
9 8 5 4 2 0
7 5 4 2 0
9 7 5 4 2 0
8 7 5 4 2 0
9 8 7 5 4 2 0
6 5 4 2 0
9 6 5 4 2 0
8 6 5 4 2 0
9 8 6 5 4 2 0
7 6 5 4 2 0
9 7 6 5 4 2 0
8 7 6 5 4 2 0
9 8 7 6 5 4 2 0
3 2 0
9 3 2 0
8 3 2 0
9 8 3 2 0
7 3 2 0
9 7 3 2 0
8 7 3 2 0
9 8 7 3 2 0
6 3 2 0
9 6 3 2 0
8 6 3 2 0
9 8 6 3 2 0
7 6 3 2 0
9 7 6 3 2 0
8 7 6 3 2 0
9 8 7 6 3 2 0
5 3 2 0
9 5 3 2 0
8 5 3 2 0
9 8 5 3 2 0
7 5 3 2 0
9 7 5 3 2 0
8 7 5 3 2 0
9 8 7 5 3 2 0
6 5 3 2 0
9 6 5 3 2 0
8 6 5 3 2 0
9 8 6 5 3 2 0
7 6 5 3 2 0
9 7 6 5 3 2 0
8 7 6 5 3 2 0
9 8 7 6 5 3 2 0
4 3 2 0
9 4 3 2 0
8 4 3 2 0
9 8 4 3 2 0
7 4 3 2 0
9 7 4 3 2 0
8 7 4 3 2 0
9 8 7 4 3 2 0
6 4 3 2 0
9 6 4 3 2 0
8 6 4 3 2 0
9 8 6 4 3 2 0
7 6 4 3 2 0
9 7 6 4 3 2 0
8 7 6 4 3 2 0
9 8 7 6 4 3 2 0
5 4 3 2 0
9 5 4 3 2 0
8 5 4 3 2 0
9 8 5 4 3 2 0
7 5 4 3 2 0
9 7 5 4 3 2 0
8 7 5 4 3 2 0
9 8 7 5 4 3 2 0
6 5 4 3 2 0
9 6 5 4 3 2 0
8 6 5 4 3 2 0
9 8 6 5 4 3 2 0
7 6 5 4 3 2 0
9 7 6 5 4 3 2 0
8 7 6 5 4 3 2 0
9 8 7 6 5 4 3 2 0
1 0
9 1 0
8 1 0
9 8 1 0
7 1 0
9 7 1 0
8 7 1 0
9 8 7 1 0
6 1 0
9 6 1 0
8 6 1 0
9 8 6 1 0
7 6 1 0
9 7 6 1 0
8 7 6 1 0
9 8 7 6 1 0
5 1 0
9 5 1 0
8 5 1 0
9 8 5 1 0
7 5 1 0
9 7 5 1 0
8 7 5 1 0
9 8 7 5 1 0
6 5 1 0
9 6 5 1 0
8 6 5 1 0
9 8 6 5 1 0
7 6 5 1 0
9 7 6 5 1 0
8 7 6 5 1 0
9 8 7 6 5 1 0
4 1 0
9 4 1 0
8 4 1 0
9 8 4 1 0
7 4 1 0
9 7 4 1 0
8 7 4 1 0
9 8 7 4 1 0
6 4 1 0
9 6 4 1 0
8 6 4 1 0
9 8 6 4 1 0
7 6 4 1 0
9 7 6 4 1 0
8 7 6 4 1 0
9 8 7 6 4 1 0
5 4 1 0
9 5 4 1 0
8 5 4 1 0
9 8 5 4 1 0
7 5 4 1 0
9 7 5 4 1 0
8 7 5 4 1 0
9 8 7 5 4 1 0
6 5 4 1 0
9 6 5 4 1 0
8 6 5 4 1 0
9 8 6 5 4 1 0
7 6 5 4 1 0
9 7 6 5 4 1 0
8 7 6 5 4 1 0
9 8 7 6 5 4 1 0
3 1 0
9 3 1 0
8 3 1 0
9 8 3 1 0
7 3 1 0
9 7 3 1 0
8 7 3 1 0
9 8 7 3 1 0
6 3 1 0
9 6 3 1 0
8 6 3 1 0
9 8 6 3 1 0
7 6 3 1 0
9 7 6 3 1 0
8 7 6 3 1 0
9 8 7 6 3 1 0
5 3 1 0
9 5 3 1 0
8 5 3 1 0
9 8 5 3 1 0
7 5 3 1 0
9 7 5 3 1 0
8 7 5 3 1 0
9 8 7 5 3 1 0
6 5 3 1 0
9 6 5 3 1 0
8 6 5 3 1 0
9 8 6 5 3 1 0
7 6 5 3 1 0
9 7 6 5 3 1 0
8 7 6 5 3 1 0
9 8 7 6 5 3 1 0
4 3 1 0
9 4 3 1 0
8 4 3 1 0
9 8 4 3 1 0
7 4 3 1 0
9 7 4 3 1 0
8 7 4 3 1 0
9 8 7 4 3 1 0
6 4 3 1 0
9 6 4 3 1 0
8 6 4 3 1 0
9 8 6 4 3 1 0
7 6 4 3 1 0
9 7 6 4 3 1 0
8 7 6 4 3 1 0
9 8 7 6 4 3 1 0
5 4 3 1 0
9 5 4 3 1 0
8 5 4 3 1 0
9 8 5 4 3 1 0
7 5 4 3 1 0
9 7 5 4 3 1 0
8 7 5 4 3 1 0
9 8 7 5 4 3 1 0
6 5 4 3 1 0
9 6 5 4 3 1 0
8 6 5 4 3 1 0
9 8 6 5 4 3 1 0
7 6 5 4 3 1 0
9 7 6 5 4 3 1 0
8 7 6 5 4 3 1 0
9 8 7 6 5 4 3 1 0
2 1 0
9 2 1 0
8 2 1 0
9 8 2 1 0
7 2 1 0
9 7 2 1 0
8 7 2 1 0
9 8 7 2 1 0
6 2 1 0
9 6 2 1 0
8 6 2 1 0
9 8 6 2 1 0
7 6 2 1 0
9 7 6 2 1 0
8 7 6 2 1 0
9 8 7 6 2 1 0
5 2 1 0
9 5 2 1 0
8 5 2 1 0
9 8 5 2 1 0
7 5 2 1 0
9 7 5 2 1 0
8 7 5 2 1 0
9 8 7 5 2 1 0
6 5 2 1 0
9 6 5 2 1 0
8 6 5 2 1 0
9 8 6 5 2 1 0
7 6 5 2 1 0
9 7 6 5 2 1 0
8 7 6 5 2 1 0
9 8 7 6 5 2 1 0
4 2 1 0
9 4 2 1 0
8 4 2 1 0
9 8 4 2 1 0
7 4 2 1 0
9 7 4 2 1 0
8 7 4 2 1 0
9 8 7 4 2 1 0
6 4 2 1 0
9 6 4 2 1 0
8 6 4 2 1 0
9 8 6 4 2 1 0
7 6 4 2 1 0
9 7 6 4 2 1 0
8 7 6 4 2 1 0
9 8 7 6 4 2 1 0
5 4 2 1 0
9 5 4 2 1 0
8 5 4 2 1 0
9 8 5 4 2 1 0
7 5 4 2 1 0
9 7 5 4 2 1 0
8 7 5 4 2 1 0
9 8 7 5 4 2 1 0
6 5 4 2 1 0
9 6 5 4 2 1 0
8 6 5 4 2 1 0
9 8 6 5 4 2 1 0
7 6 5 4 2 1 0
9 7 6 5 4 2 1 0
8 7 6 5 4 2 1 0
9 8 7 6 5 4 2 1 0
3 2 1 0
9 3 2 1 0
8 3 2 1 0
9 8 3 2 1 0
7 3 2 1 0
9 7 3 2 1 0
8 7 3 2 1 0
9 8 7 3 2 1 0
6 3 2 1 0
9 6 3 2 1 0
8 6 3 2 1 0
9 8 6 3 2 1 0
7 6 3 2 1 0
9 7 6 3 2 1 0
8 7 6 3 2 1 0
9 8 7 6 3 2 1 0
5 3 2 1 0
9 5 3 2 1 0
8 5 3 2 1 0
9 8 5 3 2 1 0
7 5 3 2 1 0
9 7 5 3 2 1 0
8 7 5 3 2 1 0
9 8 7 5 3 2 1 0
6 5 3 2 1 0
9 6 5 3 2 1 0
8 6 5 3 2 1 0
9 8 6 5 3 2 1 0
7 6 5 3 2 1 0
9 7 6 5 3 2 1 0
8 7 6 5 3 2 1 0
9 8 7 6 5 3 2 1 0
4 3 2 1 0
9 4 3 2 1 0
8 4 3 2 1 0
9 8 4 3 2 1 0
7 4 3 2 1 0
9 7 4 3 2 1 0
8 7 4 3 2 1 0
9 8 7 4 3 2 1 0
6 4 3 2 1 0
9 6 4 3 2 1 0
8 6 4 3 2 1 0
9 8 6 4 3 2 1 0
7 6 4 3 2 1 0
9 7 6 4 3 2 1 0
8 7 6 4 3 2 1 0
9 8 7 6 4 3 2 1 0
5 4 3 2 1 0
9 5 4 3 2 1 0
8 5 4 3 2 1 0
9 8 5 4 3 2 1 0
7 5 4 3 2 1 0
9 7 5 4 3 2 1 0
8 7 5 4 3 2 1 0
9 8 7 5 4 3 2 1 0
6 5 4 3 2 1 0
9 6 5 4 3 2 1 0
8 6 5 4 3 2 1 0
9 8 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
9 7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
//output
1
2
1
69
3
2
59
1
58
59
7
4
3
49
2
48
49
6
1
47
48
9
49
6
7
469
5
4
39
3
38
39
5
2
37
38
8
39
5
6
369
1
36
37
9
38
8
9
359
39
5
6
358
7
359
369
47
6
5
29
4
28
29
4
3
27
28
7
29
4
5
269
2
26
27
8
28
14
8
259
29
4
5
258
6
259
269
37
1
25
26
9
27
8
9
249
28
7
8
248
9
249
259
36
29
4
5
247
6
248
258
39
7
249
259
36
269
37
47
2469
7
6
19
5
18
19
3
4
17
18
6
19
3
4
169
3
16
17
7
18
13
7
159
19
3
4
158
5
159
169
27
2
15
16
8
17
18
8
149
18
13
14
148
8
149
159
26
19
3
4
147
5
148
158
29
6
149
159
26
169
27
37
1469
1
14
15
9
16
8
9
139
17
7
8
138
9
139
149
25
18
6
7
137
8
138
148
28
9
139
149
25
159
26
36
1369
19
3
4
136
5
137
147
29
6
138
148
28
158
29
39
1359
7
139
149
25
159
26
36
1358
169
27
37
1359
47
1369
1469
247
8
7
9
6
8
9
2
5
7
8
5
9
2
3
69
4
6
7
6
8
12
6
59
9
2
3
58
4
59
69
17
3
5
6
7
7
17
7
49
8
12
13
48
7
49
59
16
9
2
3
47
4
48
58
19
5
49
59
16
69
17
27
469
2
4
5
8
6
18
8
39
7
17
18
38
8
39
49
15
8
12
13
37
14
38
48
18
8
39
49
15
59
16
26
369
9
2
3
36
4
37
47
19
5
38
48
18
58
19
29
359
6
39
49
15
59
16
26
358
69
17
27
359
37
369
469
147
1
3
4
9
5
8
9
29
6
7
8
28
9
29
39
14
7
6
7
27
8
28
38
17
9
29
39
14
49
15
25
269
8
5
6
26
7
27
37
18
8
28
38
48
48
18
28
259
9
29
39
14
49
15
25
258
59
16
26
259
36
269
369
137
9
2
3
25
4
26
36
19
5
27
37
18
47
19
29
249
6
28
38
17
48
18
28
248
58
19
29
249
39
259
359
136
7
29
39
14
49
15
25
247
59
16
26
248
36
258
358
139
69
17
27
249
37
259
359
136
47
269
369
137
469
147
247
2469
9
8
71
7
61
62
1
6
51
52
0
53
1
2
509
5
41
42
5
43
11
5
409
44
1
2
408
3
409
419
7
4
31
32
6
33
16
6
309
34
11
12
308
6
309
319
0
35
1
2
307
3
308
318
0
4
309
319
6
329
7
17
3069
3
21
22
7
23
17
7
209
24
21
17
208
7
209
219
5
25
11
12
207
13
208
218
0
7
209
219
5
229
6
16
2069
26
1
2
206
3
207
217
9
4
208
218
8
228
9
19
2059
5
209
219
5
229
6
16
2058
239
7
17
2059
27
2069
2169
47
2
11
12
8
13
18
8
109
14
28
18
108
8
109
119
4
15
21
22
107
18
108
118
0
8
109
119
4
129
5
15
1069
16
11
12
106
13
107
117
8
14
108
118
38
128
8
18
1059
8
109
119
4
129
5
15
1058
139
6
16
1059
26
1069
1169
0
17
1
2
105
3
106
116
9
4
107
117
8
127
9
19
1049
5
108
118
7
128
8
18
1048
138
9
19
1049
29
1059
1159
0
6
109
119
4
129
5
15
1047
139
6
16
1048
26
1058
1158
0
149
7
17
1049
27
1059
1159
36
37
1069
1169
37
1269
47
147
10469
1
1
2
9
3
19
9
9
4
29
19
8
9
9
19
3
5
31
29
7
19
8
18
0
9
9
19
3
29
4
14
69
6
21
22
6
23
7
17
7
19
8
18
37
28
7
17
59
9
9
19
3
29
4
14
58
39
5
15
59
25
69
169
27
7
11
12
5
13
6
16
8
14
7
17
38
27
8
18
49
15
8
18
48
28
104
48
48
38
8
18
49
28
59
159
0
9
9
19
3
29
4
14
47
39
5
15
48
25
58
158
0
49
6
16
49
26
59
159
26
36
69
169
27
269
37
137
469
8
1
2
4
3
5
15
9
4
6
16
8
26
9
19
39
5
7
17
7
27
8
18
38
37
9
19
39
29
49
149
25
6
8
18
6
28
7
17
37
38
8
18
38
28
48
148
0
48
9
19
39
29
49
149
25
39
59
159
26
259
36
136
369
7
9
19
3
29
4
14
36
39
5
15
37
25
47
147
29
49
6
16
38
26
48
148
28
36
58
158
29
258
39
139
359
59
7
17
39
27
49
149
25
37
59
159
26
259
36
136
358
47
69
169
27
269
37
137
359
369
47
147
369
247
469
1469
247