You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
# include <bits/stdc++.h>
using namespace std ;
//好题!
//如果需要性能上的优化, 防止TLE的话: https://blog.csdn.net/QQGUOsiBO/article/details/104215038
int main ( ) {
//key:原来牌的位置索引, value是指牌的号
map < int , int > _map ;
int n ;
cin > > n ;
queue < int > q ;
for ( int i = 1 ; i < = n ; + + i ) {
q . push ( i ) ;
}
int count = 0 ;
while ( ! q . empty ( ) ) {
//弹出最上面
int out = q . front ( ) ;
q . pop ( ) ;
//第几个出列了
count + + ;
_map [ out ] = count ;
//需要向后移动count+1张牌
if ( ! q . empty ( ) ) {
for ( int i = 0 ; i < count + 1 ; + + i ) {
int t = q . front ( ) ;
q . pop ( ) ;
q . push ( t ) ;
}
}
}
//遍历_map进行输出,因为_map是按key有序的, 所以可以直接输出
for ( map < int , int > : : iterator it = _map . begin ( ) ; it ! = _map . end ( ) ; it + + )
cout < < it - > second < < " " ;
return 0 ;
}