Submission #158446

#TimeUsernameProblemLanguageResultExecution timeMemory
158446davitmargBoxes with souvenirs (IOI15_boxes)C++17
10 / 100
3 ms380 KiB
/*DavitMarg*/ #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <set> #include <queue> #include <iomanip> #include <bitset> #include <stack> #include <cassert> #include <iterator> #include <fstream> #define mod 1000000000ll #define LL long long #define LD long double #define MP make_pair #define PB push_back #define all(v) v.begin(), v.end() using namespace std; int n; LL k, m; deque<LL> pos; LL ans; LL delivery(int N, int K, int L, int *P) { n = N; k = K; m = L; for (int i = 0; i < N; i++) if (P[i]) pos.PB(P[i]); while (!pos.empty()) { if (pos.size() >= 2 * k) { if (pos[k - 1] < (m - pos[pos.size() - k])) { ans += 2ll * pos[k - 1]; for (int i = 0; i < k; i++) pos.pop_front(); } else { ans += 2ll * (m - pos[pos.size() - k]); for (int i = 0; i < k; i++) pos.pop_back(); } } else { LL add1 = 0, add2 = 0; k = min(k, (LL)pos.size()); add1 += min(2ll * pos[k - 1], m); if (k != pos.size()) add1 += min(2ll * (m - pos[k]), m); add2 += min(2ll * (m - pos[pos.size() - k]), m); if (pos.size() != k) add2 += min(2ll * pos[pos.size() - k - 1], m); ans += min(add1, add2); break; } } return ans; } #ifdef death int main() { int N, K, L; int P[102]; cin >> N >> K >> L; for (int i = 0; i < N; i++) cin >> P[i]; cout << delivery(N, K, L, P) << endl; return 0; } #endif /* 3 1 8 1 2 5 */

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:40:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if (pos.size() >= 2 * k)
             ~~~~~~~~~~~^~~~~~~~
boxes.cpp:60:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (k != pos.size())
                 ~~^~~~~~~~~~~~~
boxes.cpp:64:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if (pos.size() != k)
                 ~~~~~~~~~~~^~~~
#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...