제출 #516387

#제출 시각아이디문제언어결과실행 시간메모리
516387leakedSob (COCI19_sob)C++14
49 / 110
1061 ms28392 KiB
#include <bits/stdc++.h>

#define f first
#define s second
#define fast_izho ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define vec vector
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define sz(x) (int)(x).size()
#define pw(x) (1LL<<(x))
#define m_p make_pair
//#pragma GCC optimize ("unroll-loops")
using namespace std;
typedef long long ll;
typedef pair<long long,int> pli;
typedef pair<int,int> pii;
template <class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);}
template <class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);}
const int N=1e6+1;
vec<int> g[N];
int mt[N],used[N],tt=1;
bool try_kuhn(int v){
    if(used[v]==tt) return 0;
    used[v]=tt;
    for(auto &z : g[v]){
        if(mt[z]==-1){
            mt[z]=v;return 1;
        }
    }
    for(auto &z : g[v]){
        if(try_kuhn(mt[z])){
            mt[z]=v;return 1;
        }
    }
    return 0;
}
signed main(){
    fast_izho;
    int n,m;
    cin>>n>>m;
//    fill(mt,mt+n,-1);
//    for(int i=0;i<n;i++){
//        for(int j=m;j<n+m;j++){
//            if((i&j)==i)
//                g[i].pb(j-m);
//        }
//    }
//    for(int i=0;i<n;i++)
//        try_kuhn(i),tt++;
//    for(int i=0;i<n;i++)
//        cout<<mt[i]<<' '<<m+i<<'\n';
    int x=31-__builtin_clz(n);
    if(pw(x)<n) ++x;
    x=pw(x);
    vec<int>b(x,-1);
    int j=0;int kk=0;
    for(int i=m;i<m+n;i++){
        if(i%x==0) kk=1;
        j+=(!kk);
        b[i%x]=i;
    }
    for(int i=0;i<n-j;i++)
        cout<<i<<' '<<b[i]<<endl;
//    cout<<endl;
    for(int i=n-1;i>=n-j;i--){
        int kt=0;
        for(int k=m;k<m+j;k++){
            if((i&k)==i && b[k%x]!=-1){
                b[k%x]=-1;
                cout<<i<<' '<<k<<endl;
                kt=1;
                break;
            }
        }
        assert(kt);
    }
//    for(int i=0;i<x;i++)
//        cout<<i<<' '<<b[i]<<'\n';
    return 0;
}
/*

*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...