結果
問題 | No.3024 全単射的 |
ユーザー |
👑 |
提出日時 | 2023-09-06 22:49:36 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,474 bytes |
コンパイル時間 | 11,067 ms |
コンパイル使用メモリ | 277,344 KB |
最終ジャッジ日時 | 2025-02-16 19:08:56 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 11 TLE * 11 |
ソースコード
// 愚直(O((log N)N 2^N))解チェック#ifdef DEBUG#define _GLIBCXX_DEBUG#define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr ); signal( SIGABRT , &AlertAbort )#define DEXPR( LL , BOUND , VALUE , DEBUG_VALUE ) CEXPR( LL , BOUND , DEBUG_VALUE )#define CERR( MESSAGE ) cerr << MESSAGE << endl;#define COUT( ANSWER ) cout << "出力: " << ANSWER << endl#define ASSERT( A , MIN , MAX ) CERR( "ASSERTチェック: " << ( MIN ) << ( ( MIN ) <= A ? "<=" : ">" ) << A << ( A <= ( MAX ) ? "<=" : ">" ) << ( MAX) ); assert( ( MIN ) <= A && A <= ( MAX ) )#else#pragma GCC optimize ( "O3" )#pragma GCC optimize( "unroll-loops" )#pragma GCC target ( "sse4.2,fma,avx2,popcnt,lzcnt,bmi2" )#define UNTIE ios_base::sync_with_stdio( false ); cin.tie( nullptr )#define DEXPR( LL , BOUND , VALUE , DEBUG_VALUE ) CEXPR( LL , BOUND , VALUE )#define CERR( MESSAGE )#define COUT( ANSWER ) cout << ANSWER << "\n"#define ASSERT( A , MIN , MAX ) assert( ( MIN ) <= A && A <= ( MAX ) )#endif#include <bits/stdc++.h>using namespace std;using ll = long long;#define MAIN main#define TYPE_OF( VAR ) decay_t<decltype( VAR )>#define CEXPR( LL , BOUND , VALUE ) constexpr LL BOUND = VALUE#define CIN( LL , A ) LL A; cin >> A#define SET_ASSERT( A , MIN , MAX ) cin >> A; ASSERT( A , MIN , MAX )#define CIN_ASSERT( A , MIN , MAX ) TYPE_OF( MAX ) A; SET_ASSERT( A , MIN , MAX )#define FOR( VAR , INITIAL , FINAL_PLUS_ONE ) for( TYPE_OF( FINAL_PLUS_ONE ) VAR = INITIAL ; VAR < FINAL_PLUS_ONE ; VAR ++ )#define QUIT return 0#define RETURN( ANSWER ) COUT( ( ANSWER ) ); QUIT#ifdef DEBUGinline void AlertAbort( int n ) { CERR("abort関数が呼ばれました。assertマクロのメッセージが出力されていない場合はオーバーフローの有無を確認をしてください。" ); }#endifint MAIN(){UNTIE;DEXPR( int , bound_N , 100000 , 100 ); // 0が5個CIN_ASSERT( N , 1 , bound_N );CEXPR( ll , bound_M , 1000000000000000000 ); // 0が18個CIN_ASSERT( M , 2 , bound_M );ll LR[bound_N][2];FOR( i , 0 , N ){CIN_ASSERT( Li , 1 , M );CIN_ASSERT( Ri , Li + 1 , M );auto& LRi = LR[i];LRi[0] = --Li;LRi[1] = --Ri;}int answer = 0;ll S = -1;while( ( ++S ) >> N == 0 ){set<ll> fall{};FOR( i , 0 , N ){fall.insert( LR[i][(S>>i)&1] );}int temp = fall.size();answer < temp ? answer = temp : answer;}RETURN( answer );}