Submission #1054195

#TimeUsernameProblemLanguageResultExecution timeMemory
1054195MokocraftPalembang Bridges (APIO15_bridge)C++14
22 / 100
59 ms2100 KiB
#include <iostream> #include <stdio.h> #include <array> #include <algorithm> #include <vector> #include <cmath> int main() { //freopen("duotaA.txt", "r", stdin); int K, N; std::cin >> K >> N; long long extra = 0; std::vector<std::pair<int, int>> ranges; for(int i = 0; i < N; i++) { int ai, bi; char ac, bc; std::cin >> ac >> ai >> bc >> bi; if(ai > bi) std::swap(ai, bi); if(ac == bc) extra += bi - ai; else ranges.push_back(std::make_pair(ai, bi)); } N = ranges.size(); if(N == 0) { std::cout << extra; return 0; } if(K == 1) { long long dist = 0; int nums[N*2]; for(int i = 0; i < N; i++) { nums[i*2] = ranges[i].first; nums[i*2+1] = ranges[i].second; } std::sort(nums, nums + N*2); int point = nums[N]; for(int i = 0; i < N; i++) { if(point >= ranges[i].first && point <= ranges[i].second) dist += 1 + ranges[i].second - ranges[i].first; else dist += 1 + ranges[i].second - ranges[i].first + 2 * std::min(std::abs(ranges[i].second - point), std::abs(ranges[i].first - point)); } std::cout << dist + extra; } else { // speju kad gali buti po puses masyvu mediana jeigu K == 2 long long dist = 0; int nums[N*2]; for(int i = 0; i < N; i++) { nums[i*2] = ranges[i].first; nums[i*2+1] = ranges[i].second; } std::sort(nums, nums + N*2); int point1, point2; point1 = nums[N/2]; point2 = nums[N/2 + N]; for(int i = 0; i < N; i++) { int temp1; int temp2; if(point1 >= ranges[i].first && point1 <= ranges[i].second) temp1 = 1 + ranges[i].second - ranges[i].first; else temp1 = 1 + ranges[i].second - ranges[i].first + 2 * std::min(std::abs(ranges[i].second - point1), std::abs(ranges[i].first - point1)); if(point2 >= ranges[i].first && point2 <= ranges[i].second) temp2 = 1 + ranges[i].second - ranges[i].first; else temp2 = 1 + ranges[i].second - ranges[i].first + 2 * std::min(std::abs(ranges[i].second - point2), std::abs(ranges[i].first - point2)); dist += std::min(temp1, temp2); } std::cout << dist + extra; } return 0; }
#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...