Submission #1291451

#TimeUsernameProblemLanguageResultExecution timeMemory
1291451wedonttalkanymoreSemiexpress (JOI17_semiexpress)C++20
100 / 100
43 ms33232 KiB
#include <bits/stdc++.h>
/*
    Ngay hay dem
    Voi troi giac mo em dem
*/
using namespace std;
using ll = long long;

#define int long long
#define pii pair<ll, ll>
#define fi first
#define se second

const ll N = 2e5 + 5, inf = 1e18, mod = 1e9 + 7, block = 320, lim = 19;

int n, m, k, A, B, C, T;
int a[N];

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    if (fopen(".inp", "r")) {
        freopen(".inp", "r", stdin);
        freopen(".out", "w", stdout);
    }
    cin >> n >> m >> k;
    cin >> A >> B >> C;
    cin >> T;
    for (int i = 1; i <= m; i++) cin >> a[i];
    a[m + 1] = n + 1;
    int ans = 0;
    priority_queue <int> pq;
    // if ((n - 1) * B <= T) ans++;
    for (int i = 1; i <= m; i++) {
        int cost = (a[i] - 1) * B; // dung express
        if (cost > T) break;
        int remain = (T - cost) / A; // dung local
        int range = min(a[i + 1] - 1, a[i] + remain);
        ans += range - a[i] + 1;
        if (a[i] == 1) ans--;

        for (int j = 0; j < k && range < a[i + 1] - 1; j++) {
            int tmp = cost + ((range + 1) - a[i]) * C; // dung semiexpress tu a[i] + 1 -> range + 1
            if (tmp > T) break;
            int remain = (T - tmp) / A; // dung local
            int newrange = min(a[i + 1] - 1, range + 1 + remain);
            pq.push(newrange - range); 
            range = newrange;
        }
    }
    
    for (int i = 0; i < k - m; i++) {
        if (pq.size()) {
            ans += pq.top(); 
            pq.pop();
        }
    }
    cout << ans;
    return 0;
}

Compilation message (stderr)

semiexpress.cpp: In function 'int main()':
semiexpress.cpp:23:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |         freopen(".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~
semiexpress.cpp:24:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   24 |         freopen(".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...