Submission #1277700

#TimeUsernameProblemLanguageResultExecution timeMemory
1277700Bui_Quoc_CuongSemiexpress (JOI17_semiexpress)C++20
100 / 100
6 ms2496 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> ii; typedef pair<int, ii> iii; template<class T> bool minimize(T &a, const T &b) { if (a > b) return a = b, true; return false; } template<class T> bool maximize(T &a, const T &b) { if (a < b) return a = b, true; return false; } #define FOR(i,a,b) for(int i=(a); i<=(int)(b); ++i) #define FORD(i,a,b) for(int i=(a); i>=(int)(b); --i) #define MASK(i) (1LL << (i)) #define BIT(S, i) (((S) >> (i)) & 1) #define mp make_pair #define pb push_back #define fi first #define se second #define all(x) x.begin(), x.end() const int MOD = 1e9 + 7; const int oo = 1e9 + 29032008; const ll INF = 1e18 + 29032008; const int N = 2e5 + 5; int n, m, k, A, B, C; long long TimeLimit; int s[N]; void init(void) { cin >> n >> m >> k >> A >> B >> C >> TimeLimit; FOR(i, 1, m) cin >> s[i]; } void process(void) { ll ans = - 1 + (1LL * (n - 1) * B <= TimeLimit); priority_queue <int> pq; k-= m; FOR(i, 1, m - 1) { int curPos = s[i], curCnt = 0; while (curPos < s[i + 1]) { long long rem = TimeLimit - 1LL * (s[i] - 1) * B - 1LL * (curPos - s[i]) * C; if (rem < 0) break; int res = rem / A + 1; if (curPos + res >= s[i + 1]) { res = s[i + 1] - curPos; curPos = s[i + 1]; } curPos+= res; if (!curCnt) { ans+= res; } else { pq.push(res); } curCnt++; if (curCnt > k) break; } } while (!pq.empty() && k > 0) { ans+= pq.top(); pq.pop(); k--; } cout << ans; } int main(void) { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define kieuoanh "kieuoanh" if (fopen(kieuoanh".inp", "r")) { freopen(kieuoanh".inp", "r", stdin); freopen(kieuoanh".out", "w", stdout); } int TEST = 1; // cin >> TEST; while (TEST--) { init(); process(); } return 0; }

Compilation message (stderr)

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