Submission #345029

#TimeUsernameProblemLanguageResultExecution timeMemory
345029pggp선물상자 (IOI15_boxes)C++14
0 / 100
1 ms384 KiB
#include <bits/stdc++.h> using namespace std; long long delivery(int N, int K, int L, int p[]){ vector < int > positions; for (int i = 0; i < N; ++i) { positions.push_back(p[i]); } vector < int > l, r; vector < long long > l_dp, r_dp; for (int i = 0; i < N; ++i) { if(positions[i] > L/2){ r.push_back(positions[i]); } else{ l.push_back(positions[i]); } } sort(r.begin(), r.end(), greater < int >()); l_dp.resize(N + 1); r_dp.resize(N + 1); for (int i = 0; i < l.size(); ++i) { if(i >= K){ l_dp[i] = l_dp[i - K] + l[i]; } else{ l_dp[i] = l[i]; } } for (int i = 0; i < r.size(); ++i) { if(i >= K){ r_dp[i] = r_dp[i - K] + (L - r[i]); } else{ r_dp[i] = L - r[i]; } } //cout << r.size() << " " << l.size() << endl; long long ans = 2 * r_dp[r.size() - 1] + 2 * l_dp[l.size() - 1]; //cout << ans << endl; for (int i = 1; i < K; ++i) { //cout << ans << endl; long long a, b; long long s = l.size() - i - 1; if(s < 0){ a = 0; } else{ a = 2 * l_dp[l.size() - i - 1]; } long long t = (r.size() - (K - i) - 1); //cout << "A = " << t << endl; if(t < 0){ b = 0; } else{ //cout << r.size() << endl; b = 2 * r_dp[r.size() - (K - i) - 1]; } ans = min(ans, a + b + L); } return ans; }

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:26:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |  for (int i = 0; i < l.size(); ++i)
      |                  ~~^~~~~~~~~~
boxes.cpp:35:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |  for (int i = 0; i < r.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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...