Cod sursa(job #2097622)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 31 decembrie 2017 23:33:03
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <fstream>
using namespace std;
ifstream cin("decodare.in");
ofstream cout("decodare.out");
const int NMAX=1000;
int n,k,d,m;
long long dp[NMAX+5][NMAX+5],sum[NMAX+5];
long long c;
int CAUTARE_BINARA(int strat,long long val)
{
    for(int j=1;j<=n;j++)
        sum[j]=sum[j-1]+dp[strat][j];
    int r=d*(strat-1)+1,pas=1<<9;
    while(pas)
    {
        if(r+pas<=n-d*(k-strat) and sum[r+pas]<val)
        {
            r+=pas;
        }
        pas/=2;
    }
    return r;
}
int main()
{
    cin>>n>>k>>d>>m;
    for(int j=1;j<=n;j++)
    {
        dp[1][j]=1;
        sum[j]=sum[j-1]+dp[1][j];
    }
    for(int i=2;i<=k;i++)
    {
        for(int j=d;j<=n;j++)
            dp[i][j]=sum[j-d];
        for(int j=1;j<=n;j++)
            sum[j]=sum[j-1]+dp[i][j];
    }
    for(int i=1;i<=k;i++)
        for(int j=1;j<=n;j++)
            cout<<i<<" "<<j<<" : "<<dp[i][j]<<"\n";
    for(int i=1;i<=m;i++)
    {
        cin>>c;
        int X;
        X=CAUTARE_BINARA(1,c);
        cout<<n-X<<"\n";
    }
    return 0;
}
/**
1 1  ::  1
1 2  ::  1
1 3  ::  1
1 4  ::  0
1 5  ::  0
1 6  ::  0
1 7  ::  0
2 1  ::  0
2 2  ::  0
2 3  ::  1
2 4  ::  2
2 5  ::  3
2 6  ::  0
2 7  ::  0
3 1  ::  0
3 2  ::  0
3 3  ::  0
3 4  ::  0
3 5  ::  1
3 6  ::  3
3 7  ::  6
**/