제출 #330486

#제출 시각아이디문제언어결과실행 시간메모리
330486SnowFlake7Pinball (JOI14_pinball)C++14
100 / 100
934 ms33628 KiB
#include <bits/stdc++.h> using namespace std; const long long MX_VAL = 1e18; long long a[100005],b[100005],c[100005],d[100005]; long long aint[2000005],dp1[100005],dp2[100005]; map <int, int> mp; vector <int> v; void update(int nod, int st, int dr, int poz, long long val) { if (st == dr) aint[nod] = min(aint[nod], val); else { int md = (st + dr) / 2; if (poz <= md) update(2 * nod, st, md, poz, val); if (poz >= md + 1) update (2 * nod + 1, md + 1, dr, poz, val); aint[nod] = min(aint[2 * nod], aint[2 * nod + 1]); } } long long query(int nod, int st, int dr, int a, int b) { if (a <= st && dr <= b) return aint[nod]; else { int md = (st + dr) / 2; long long ans = MX_VAL; if (a <= md) ans = min(ans, query(2 * nod, st, md, a, b)); if (b >= md + 1) ans = min(ans, query(2 * nod + 1, md + 1, dr, a, b)); return ans; } } int main () { long long n,m,nr = 0,ans = MX_VAL; cin >> m >> n; for (int i = 1;i <= m;i++) { cin >> a[i] >> b[i] >> c[i] >> d[i]; v.push_back(a[i]); v.push_back(b[i]); v.push_back(c[i]); } sort(v.begin(), v.end()); for (int i = 0;i < v.size();i++) { if (!i || v[i] != v[i - 1]) mp[v[i]] = ++nr; } for (int i = 1; i <= 4 * nr;i++) aint[i] = MX_VAL; for (int i = 1;i <= m;i++) dp1[i] = dp2[i] = MX_VAL; for (int i = 1;i <= m;i++) { if (a[i] == 1) dp1[i] = d[i]; else dp1[i] = min(dp1[i], d[i] + query(1, 1, nr, mp[a[i]], mp[b[i]])); update(1, 1, nr, mp[c[i]], dp1[i]); } for (int i = 1;i <= 4 * nr;i++) aint[i] = MX_VAL; for (int i = 1;i <= m;i++) { if (b[i] == n) dp2[i] = d[i]; else dp2[i] = min(dp2[i], d[i] + query(1, 1, nr, mp[a[i]], mp[b[i]])); update(1, 1, nr, mp[c[i]], dp2[i]); } for (int i = 1;i <= m;i++) ans = min(ans, dp1[i] + dp2[i] - d[i]); if (ans == MX_VAL) ans = -1; cout << ans; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

pinball.cpp: In function 'int main()':
pinball.cpp:47:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for (int i = 0;i < v.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...