답안 #959108

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
959108 2024-04-07T13:43:44 Z lollipop The Collection Game (BOI21_swaps) C++17
25 / 100
75 ms 1712 KB
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/rope>
//#define int long long
#define pb push_back
#define s second
#define f first
#define pf push_front
#define inf 100000000000000000
#define bitebi __builtin_popcountll
#define FOR( i , n ) for( int i = 0 ; i < n ; i ++ )
#define YES cout <<"YES\n"
#define NO cout << "NO\n"
#define debug cout << "Here Fine" << endl ;
#define pr pair < int , int >
#define fbo find_by_order // returns iterator
#define ook order_of_key // returns strictly less numbers than key
using namespace std ;
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
using namespace __gnu_pbds;
using namespace __gnu_cxx;
template<class T> using ordered_set =tree<T, null_type, less<T>, rb_tree_tag,tree_order_statistics_node_update> ;
const double Pi=acos(-1.0);
const double EPS=1E-8;
const int mod =  1000000007 ;
const int mod1 = 998244353 ;
const int N = 2e5 + 10 ;
mt19937 R(time(0));
map < int , int > ma , ma1 ;

#include "swaps.h"


vector < vector < pair < int , int > > > dd ;
vector < int > ans ; 

vector < pair < int , int > > lst , nxt ;

void build(){
	dd.pb( lst ) ;
    int tt = 0 ; 
	for( auto x : lst ){
		if( x.f != x.s ) tt = 1 ; 
	}
	if( tt == 0 ) return ; 
	for( auto x : lst ){
		if( x.f == x.s ) nxt.pb( x ) ;
		else{
			int l = x.f , r = x.s ;
			int ss = ( r - l + 1 ) ; 
			int mid = l + ( ss + 1 ) / 2 - 1 ;
			nxt.pb( { l , mid } ) ;
			nxt.pb( { mid + 1 , r } ) ;
		}
	}
	lst = nxt ; nxt.clear() ;
	build() ; 
	return ; 
}

// now recursive solution
vector < int > pip ; 
vector < pair < int , int > > qu ;


void go( int hh ){
	pip.clear() ;
	if( hh == dd.size() - 1 ){
		return ; 
	}
	go( hh + 1 ) ;
	// now sort and go once again
	qu.clear() ; 
	
	for( auto x : dd[ hh ] ){
		if( x.f == x.s ) continue ;
		int l = x.f , r = x.s ;
		int ss = ( r - l + 1 ) ; 
		int mid = l + ( ss + 1 ) / 2 - 1 ;
		
		// l -- mid sorted, mid + 1 -- r sorted 
		// now unite 
		int pos = mid ; 
		for( int j = mid + 1 ; j <= r ; j ++ ){
			schedule( ans[ pos ] , ans[ j ] ) ;
			qu.pb( { pos , j } ) ;
			pos -- ;
		}
	}
	
	pip = visit() ;
	FOR( i , pip.size() ){
		int cur = pip[ i ] ;
		int a1 = qu[ i ].f , a2 = qu[ i ].s ;
		if( cur != 1 ){
			swap( ans[ a1 ] , ans[ a2 ] ) ;
		}
	}
	go( hh + 1 ) ; 
	return ; 
}

void solve( int n , int v ){
	ans.clear() ;
	ans.pb( - 1 ) ;
    for( int i = 1 ; i <= n ; i ++ ) ans.pb( i ) ;
    
    if( n != 1 ){
	    lst.clear() ; dd.clear() ; nxt.clear() ; 
	    lst.pb( { 1 , n } ) ;
	    build() ;
	    go( 0 ) ;
	        go(0) ;
    }
    
    vector < int > pas ;
    for( int i = 1 ; i <= n ; i ++ ) pas.pb( ans[ i ] ) ;
    answer( pas ) ;
    return ;

}
//signed main() {
//   ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
//   int t = 1 ; // cin >> t ;
//   while( t -- ){
//   	 solve() ;
//   }
//
//}




Compilation message

swaps.cpp: In function 'void go(int)':
swaps.cpp:70:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   70 |  if( hh == dd.size() - 1 ){
      |      ~~~^~~~~~~~~~~~~~~~
swaps.cpp:12:41: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 | #define FOR( i , n ) for( int i = 0 ; i < n ; i ++ )
......
   94 |  FOR( i , pip.size() ){
      |       ~~~~~~~~~~~~~~                     
swaps.cpp:94:2: note: in expansion of macro 'FOR'
   94 |  FOR( i , pip.size() ){
      |  ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 20 ms 344 KB Correct
4 Correct 68 ms 976 KB Correct
5 Correct 67 ms 1704 KB Correct
6 Correct 65 ms 1448 KB Correct
7 Correct 70 ms 1704 KB Correct
8 Correct 64 ms 956 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 18 ms 344 KB Correct
4 Correct 75 ms 1452 KB Correct
5 Correct 67 ms 1444 KB Correct
6 Correct 65 ms 1452 KB Correct
7 Correct 68 ms 1204 KB Correct
8 Correct 65 ms 1452 KB Correct
9 Runtime error 72 ms 1708 KB Execution killed with signal 13
10 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 1 ms 504 KB Correct
4 Correct 4 ms 344 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 500 KB Correct
3 Correct 19 ms 344 KB Correct
4 Correct 66 ms 1712 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 500 KB Correct
3 Correct 19 ms 344 KB Correct
4 Correct 66 ms 1712 KB Correct
5 Correct 1 ms 344 KB Correct
6 Correct 4 ms 340 KB Correct
7 Correct 17 ms 344 KB Correct
8 Correct 66 ms 1220 KB Correct
9 Correct 70 ms 1456 KB Correct
10 Correct 64 ms 1196 KB Correct
11 Correct 66 ms 1456 KB Correct
12 Correct 69 ms 1452 KB Correct
13 Correct 1 ms 344 KB Correct
14 Correct 4 ms 344 KB Correct
15 Correct 18 ms 344 KB Correct
16 Correct 68 ms 1440 KB Correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 18 ms 344 KB Correct
4 Correct 68 ms 1208 KB Correct
5 Runtime error 34 ms 952 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 18 ms 344 KB Correct
4 Correct 68 ms 1208 KB Correct
5 Runtime error 34 ms 952 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 18 ms 344 KB Correct
4 Correct 66 ms 1204 KB Correct
5 Runtime error 33 ms 1456 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 18 ms 344 KB Correct
4 Correct 66 ms 1204 KB Correct
5 Runtime error 33 ms 1456 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 19 ms 344 KB Correct
4 Correct 67 ms 1204 KB Correct
5 Runtime error 32 ms 1456 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Correct
2 Correct 4 ms 344 KB Correct
3 Correct 19 ms 344 KB Correct
4 Correct 67 ms 1204 KB Correct
5 Runtime error 32 ms 1456 KB Execution killed with signal 13
6 Halted 0 ms 0 KB -