Submission #905225

#TimeUsernameProblemLanguageResultExecution timeMemory
905225andrei_iorgulescuSemiexpress (JOI17_semiexpress)C++14
100 / 100
12 ms6324 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

int n,m,k,a,b,c,t,s[3005];
int ans = -1;
vector<int>u;

void blabla(int len,int timp,int coef)
{
    int ans2 = 0;
    ///am statii de la 0 la len, unde 0 e statia cu expres
    if (timp < 0)
        return;
    if (coef < 0)
        return;
    if (len < 0)
        return;
    //cout << len << ' ' << timp << ' ' << coef << endl;
    if (coef == k - m)
        ans++;
    else
        ans2++;
    int poz = timp / a + 1;
    poz = min(poz,len + 1);
    if (coef == k - m)
        ans += poz - 1;
    else
        ans2 += poz - 1;
    if (coef != k - m)
        u.push_back(ans2);
    len -= poz;
    timp -= c * poz;
    coef--;
    blabla(len,timp,coef);
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n >> m >> k >> a >> b >> c >> t;
    for (int i = 1; i <= m; i++)
        cin >> s[i];
    for (int i = 1; i < m; i++)
    {
        blabla(s[i + 1] - s[i] - 1,t - b * (s[i] - 1),k - m);
    }
    sort(u.begin(),u.end());
    reverse(u.begin(),u.end());
    for (int i = 0; i < min(k - m,(int)u.size()); i++)
        ans += u[i];
    if ((n - 1) * b <= t)
        ans++;
    cout << ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...