답안 #755527

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
755527 2023-06-10T08:25:13 Z PixelCat Semiexpress (JOI17_semiexpress) C++14
100 / 100
10 ms 5440 KB
#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
#define int LL
using namespace std;
using LL = long long;
using pii = pair<int, int>;

int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    // =^-w-^=
    int n, m, k; cin >> n >> m >> k; k -= m;
    int A, B, C; cin >> A >> B >> C;
    int T; cin >> T;
    vector<int> ve(m);  // express
    for(auto &i:ve) {
        cin >> i; i--;
    }
    ve.eb(n);

    vector<vector<int>> val(m);
    For(i, 0, m - 1) {
        int ptr = ve[i];
        For(k2, 0, k) {
            int rem = T - B * ve[i] - C * (ptr - ve[i]);
            if(rem < 0) break;
            int ptr2 = min(ve[i + 1] - 1, ptr + rem / A);
            if(ptr2 < ptr) break;
            val[i].eb(ptr2 - ptr + 1);
            ptr = ptr2 + 1;
        }
    }

    vector<int> cur(m, 1);
    int ans = 0;
    For(i, 0, m - 1) {
        if(sz(val[i])) ans += val[i][0];
    }
    while(k--) {
        int mx = -1, mxi = -1;
        For(i, 0, m - 1) {
            if(cur[i] < sz(val[i]) && val[i][cur[i]] > mx) {
                mx = val[i][cur[i]];
                mxi = i;
            }
        }
        if(mx < 0) break;
        ans += mx;
        cur[mxi]++;
    }
    cout << ans - 1 << "\n";
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 316 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 316 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 316 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 1 ms 212 KB Output is correct
13 Correct 1 ms 212 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 316 KB Output is correct
16 Correct 1 ms 212 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 1 ms 328 KB Output is correct
20 Correct 1 ms 340 KB Output is correct
21 Correct 1 ms 340 KB Output is correct
22 Correct 1 ms 468 KB Output is correct
23 Correct 10 ms 5440 KB Output is correct
24 Correct 1 ms 456 KB Output is correct
25 Correct 1 ms 340 KB Output is correct
26 Correct 1 ms 456 KB Output is correct
27 Correct 1 ms 468 KB Output is correct
28 Correct 1 ms 468 KB Output is correct
29 Correct 6 ms 4180 KB Output is correct
30 Correct 3 ms 1876 KB Output is correct