Submission #1280793

#TimeUsernameProblemLanguageResultExecution timeMemory
1280793silence25Rack (eJOI19_rack)C++20
100 / 100
17 ms23268 KiB
#include "bits/stdc++.h"
#define ll long long
#define ff first
#define ss second
using namespace std;
const ll mod = 1000000007;
const ll INF = 1e18;
void solve(){
	ll n,k;
	cin>>n>>k;
	pair<ll,bool>m[n+5];
	ll m1[n+5];
	m1[0] = 1LL;
	m[0] = {1LL,false};
	for(ll i = 1;i<=n;++i){
		m1[i] = (m1[i-1] * 2LL)%mod;
		m[i].ff = (m[i-1].ff * 2LL);
		m[i].ss = (m[i-1].ss) | (m[i].ff > k);
	}
	ll id,cur;
	id = cur = 1LL;
	for(ll i = 1;i<=n;++i){
		ll x = m[n-i].ff;
		if(m[n-i].ss || x + cur > k)
			continue;
		cur += x;
		id = (id + m1[i-1])%mod;
	}
	cout<<id;
}
int main(){
	// freopen("file.in","r",stdin);
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...