Submission #241213

#TimeUsernameProblemLanguageResultExecution timeMemory
241213osaaateiasavtnlLong Distance Coach (JOI17_coach)C++17
0 / 100
5 ms384 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define ii pair <int, int> #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); #endif int x, n, m, w, t; cin >> x >> n >> m >> w >> t; //first - d, second - c vector <int> s(n); for (int i = 0; i < n; ++i) cin >> s[i]; s.app(x); s.insert(s.begin(), 0); vector <ii> a(m); for (int i = 0; i < m; ++i) cin >> a[i].f >> a[i].s; sort(all(a)); reverse(all(a)); a.insert(a.begin(), mp(0, 0)); auto getcnt = [&](int x, int d) { //d + k * t <= x //k * t <= x - d if (x < d) return 0ll; int k = (x-d)/t; return k + 1; }; auto get = [&](int i, int j) { int di = a[i].f, dj = a[j%a.size()].f; for (int p = 0; p + 1 < s.size(); ++p) { if (getcnt(s[p+1], di) > getcnt(s[p+1], dj) || (getcnt(s[p+1], di) == getcnt(s[p+1], dj) && di > dj)) { return a[i].s + (getcnt(s[p+1], di)-1)*w; } } return -1ll; }; auto save = [&](int i) { if (i == a.size()) return 0ll; int cnt = x/t+(a[i].f<=(x%t)); return cnt * w; }; int ans = -1; for (int mask = 0; mask < (1 << a.size()); ++mask) { if (!(mask & 1)) continue; int prv = -1; int nn = 0; bool ban = 0; for (int i = 0; i < a.size(); ++i) { if ((mask >> i) & 1) { prv = i; nn += save(i); } else { int add = get(i, prv); if (add == -1) ban = 1; nn += add; } } if (ban) continue; if (nn < ans || ans == -1) { ans = nn; } } cout << ans << endl; }

Compilation message (stderr)

coach.cpp: In lambda function:
coach.cpp:51:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int p = 0; p + 1 < s.size(); ++p) {
                         ~~~~~~^~~~~~~~~~
coach.cpp: In lambda function:
coach.cpp:59:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (i == a.size())
             ~~^~~~~~~~~~~
coach.cpp: In function 'int main()':
coach.cpp:73:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int i = 0; i < a.size(); ++i) {
                         ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...