Submission #169506

#TimeUsernameProblemLanguageResultExecution timeMemory
169506combi1k1Semiexpress (JOI17_semiexpress)C++14
100 / 100
277 ms33348 KiB
#include<bits/stdc++.h>

using namespace std;

#define all(x)  x.begin(),x.end()
#define sz(x)   (int)x.size()

#define pb  emplace_back
#define ll  long long

int main()  {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int n, m, k;    cin >> n >> m >> k;
    ll  A, B, C;    cin >> A >> B >> C;

    ll  T;  cin >> T;

    vector<int> s(m);
    vector<ll>  pot;

    for(int i = 0 ; i < m ; ++i)    cin >> s[i];    s.pb(n + 1);
    for(int i = 0 ; i < m ; ++i)    {
        ll  rem = T - B * (s[i] - 1);
        int rig = s[i];

        if (rem < 0)    {
            pot.pb(n);
            continue;
        }
        int Q = 1;

        for(int j = 0 ; j < k ; ++j)    {
            ll  nxt = rig + rem / A + 1;

            if (nxt > s[i + 1])
                nxt = s[i + 1];

            ll  len = nxt - rig;
            pot.pb(len + Q * n);    Q = 0;

            rig += len;
            rem -= len * C;

            if (rem < 0)            break;
            if (rig == s[i + 1])    break;
        }
    }

    sort(pot.begin(),pot.end(),greater<ll>());

    if (k > sz(pot))
        k = sz(pot);

    cout << accumulate(pot.begin(),pot.begin() + k,0ll) - 1ll * m * n - 1 << endl;
}
/*
300 8 16
345678901 123456789 234567890
12345678901
1
10
77
82
137
210
297
300
*/

Compilation message (stderr)

semiexpress.cpp: In function 'int main()':
semiexpress.cpp:23:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
     for(int i = 0 ; i < m ; ++i)    cin >> s[i];    s.pb(n + 1);
     ^~~
semiexpress.cpp:23:53: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
     for(int i = 0 ; i < m ; ++i)    cin >> s[i];    s.pb(n + 1);
                                                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...