답안 #147655

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
147655 2019-08-30T11:18:16 Z xDWaffle Ljetopica (COI19_ljetopica) C++11
0 / 100
500 ms 376 KB
#include <bits/stdc++.h>
#define ff(j, a, b) for(int j=a;j<b;j++)
#define pb push_back;
#define MOD 1000000007

using namespace std;

typedef long long ll;

ll n, k;
ll a, b, path;



void load_path()
{
    path=1;
    ff(j, 0, n-1)
    {
        char tmp;
        cin >> tmp;
        path=path*2;
        if(tmp=='R')
        {
            path++;
        }
    }
}

ll bin_string_to_ll(string s)
{

    ll res=1;
    ff(j, 1, s.size())
    {
       res=res*2;
       if(s[j]=='1')
       {
            res++;
       }
       res=res%MOD;
    }
    return res;
}


ll switch_at_depth_q(ll q, ll pathing)
{
    return ((1 << (n-q) )-1) ^ pathing;
}


ll check_pathing(ll x)
{
    return (x<=b && x>=a) ? x : 0;
}


ll ena_je_budala_neopjevana(ll switches, ll depth, ll pathing)
{
    if(switches==n-depth && switches>0)
    {
        return (ena_je_budala_neopjevana(switches-1, depth+1, switch_at_depth_q(depth, pathing)))%MOD;
    }
    if(depth==1)
    {
        ll sol=ena_je_budala_neopjevana(switches, depth+1, pathing);
        sol+=ena_je_budala_neopjevana(switches, depth+1, switch_at_depth_q(depth, pathing));
        if(switches>0)
        {
            sol+=ena_je_budala_neopjevana(switches-1, depth+1, pathing);
            sol+=ena_je_budala_neopjevana(switches-1, depth+1, switch_at_depth_q(depth, pathing));
        }
        return sol%MOD;
    }
    if(switches==0)
    {
        return check_pathing(pathing)%MOD;
    }

    return (ena_je_budala_neopjevana(switches, depth+1, pathing) + ena_je_budala_neopjevana(switches-1, depth+1, switch_at_depth_q(depth, pathing)))%MOD;

}

int main()
{
    cin >> n >> k;
    load_path();
    string tmpstrng;
    cin >> tmpstrng;
    a=bin_string_to_ll(tmpstrng);
    cin >> tmpstrng;
    b=bin_string_to_ll(tmpstrng);
    ///zavrseno ucitavanje!!

    /// XOR <=> ^

    cout << (int)ena_je_budala_neopjevana(k, 1, path) << endl;

    return 0;
}

Compilation message

ljetopica.cpp: In function 'll bin_string_to_ll(std::__cxx11::string)':
ljetopica.cpp:2:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 #define ff(j, a, b) for(int j=a;j<b;j++)
ljetopica.cpp:34:8:
     ff(j, 1, s.size())
        ~~~~~~~~~~~~~~             
ljetopica.cpp:34:5: note: in expansion of macro 'ff'
     ff(j, 1, s.size())
     ^~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 376 KB Output is correct
2 Incorrect 2 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1068 ms 376 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -