Submission #969425

#TimeUsernameProblemLanguageResultExecution timeMemory
969425HasanV11010238Rack (eJOI19_rack)C++17
40 / 100
1 ms360 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define mod 1000000007 int am = 0; ll binpow(ll a, ll b){ ll res = 1; if (b == -1){ return 0; } while (b != 0){ if (b % 2 == 0){ b /= 2; a *= a; if (a >= mod){ am++; } a %= mod; } else{ b -= 1; res *= a; if (res >= mod){ am++; } res %= mod; } } return res; } vector<vector<ll>> ve; ll ans = 1; ll f(ll n, ll k, ll va){ ll val = 0; if (n == 0){ return 0; } am = 0; ll po = binpow(2, n - 1); if ((am == 0 && k >= po)){ val += binpow(2, va); ve.push_back({n - 1, k - po, va + 1}); ans += val; return 0; } else if ((am == 1 && k >= po * mod)){ val += binpow(2, va); ve.push_back({n - 1, k - po * mod, va + 1}); ans += val; return 0; } ve.push_back({n - 1, k, va + 1}); ans += val; return 0; } int main(){ ll n, k; cin>>n>>k; k--; ve.push_back({n, k, 0}); for (int i = 0; i < ve.size(); i++){ f(ve[i][0], ve[i][1], ve[i][2]); } cout<<ans; }

Compilation message (stderr)

rack.cpp: In function 'int main()':
rack.cpp:61:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for (int i = 0; i < ve.size(); i++){
      |                     ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...