QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#36960 | #3230. Beautiful Now | claes | AC ✓ | 1469ms | 3676kb | C++ | 2.2kb | 2022-06-29 14:06:28 | 2022-06-29 14:06:31 |
Judging History
answer
#include <bits/stdc++.h>
#pragma optimize(3)
using namespace std ;
int n , k , t ;
int mb[15] , lb ;
int a[15] , la ;
int bh[15] ;
int ss[15] ;
bool kq[15] ;
bool flag ;
bool col[15] ;
int mx , mi ;
void check()
{
memset( col , 0 , sizeof(col) ) ;
if( a[ss[0]] == 0 ) return ;
int ans = 0 ;
int ds = 0 ;
for( int i = 0 ; i < la ; i ++ )
{
if( col[i] == 0 )
{
ds = 0 ;
int wz = i ;
while( col[wz] == 0 )
{
col[wz] = 1 ;
ds ++ ;
wz = bh[ss[wz]] ;
}
// cout<< ds << endl ;
ans += ds - 1 ;
}
}
if( ans <= k )
{
int ttt = 0 ;
for( int i = 0 ; i < la ; i ++ )
{
ttt *= 10 ;
ttt += a[ss[i]] ;
}
if( mx < ttt ) mx = ttt ;
if( mi > ttt ) mi = ttt ;
}
return ;
}
bool pd( int a , int b )
{
return a > b ;
}
int main ()
{
// freopen("data.in", "r", stdin);
// freopen("B3.out", "w", stdout);
scanf( "%d" , &t ) ;
while( t -- )
{
scanf( "%d%d" , &n , &k ) ;
mx = mi = n ;
if( n == 1000000000 )
{
printf( "1000000000 1000000000\n" ) ;
continue ;
}
int tn = n ;
la = 0 ;
while( tn > 0 )
{
a[la] = tn % 10 ;
la ++ ;
tn /= 10 ;
}
if( k >= la - 1 )
{
sort( a , a + la ) ;
int jl = 0 ;
if( a[0] == 0 )
{
for( int i = 0 ; i < n ; i ++ )
{
if( a[i] != 0 )
{
a[0] = a[i] ;
jl = i ;
a[i] = 0 ;
break ;
}
}
}
for( int i = 0 ; i < la ; i ++ )
{
printf( "%d" , a[i] ) ;
}
a[jl] = a[0] ;
if( jl != 0 ) a[0] = 0 ;
printf( " " ) ;
for( int i = la - 1 ; i >= 0 ; i -- )
{
printf( "%d" , a[i] ) ;
}
printf( "\n" ) ;
continue ;
}
sort( a , a + la ) ;
tn = n ;
lb = 0 ;
while( tn > 0 )
{
mb[lb] = tn % 10 ;
lb ++ ;
tn /= 10 ;
}
for( int i = 0 ; i < la ; i ++ )
{
for( int j = 0 ; j < la ; j ++ )
{
if( a[i] == mb[j] )
{
bh[i] = la - j - 1 ;
mb[j] = -1 ;
break ;
}
}
}
for( int i = 0 ; i < la ; i ++ ) ss[i] = i ;
flag = false ;
do
{
check() ;
}
while( next_permutation( ss , ss + la ) ) ;
printf( "%d" , mi ) ;
printf( " " ) ;
printf( "%d" , mx ) ;
printf( "\n" ) ;
}
return 0 ;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1469ms
memory: 3676kb
input:
100 645637224 8 397815246 8 239758591 7 152472214 2 485635752 8 128947635 5 938124675 8 311384311 8 665595968 7 284675191 6 3596920 776160768 428993752 4 796354812 4 342871569 7 952970714 2 399469166 8 774997047 1 534968712 5 574918236 3 564999511 645561291 791543286 7 171222224 7 319647582 2 241573...
output:
223445667 766544322 123456789 987654321 123557899 998755321 112272454 754412212 234555678 876555432 123456789 987652134 123456789 987654321 111133348 843331111 555666899 998666555 112456798 987654211 2035699 9965320 223458799 998753422 123456879 987654312 123456789 987654312 102975794 997570214 1346...
result:
ok 100 lines