top of page

CCC '23 S2 - Symmetric Mountains

#include <iostream> #include <vector> int main(){ long long N; std::cin >> N; std::vector<long long> mins (N + 121487777886); //mins[i] tells us the minimum assymetry for crop size i, default is very big number so that when we compare min it takes the initial value std::vector<long long> mountains (N); for (int i = 0; i < N; i++){ std::cin >> mountains[i]; } //For odd numbered crop sizes for (long long mid = 0; mid < N; mid++){ long long left = mid, right = mid; long long size = 1; long long assy = 0; mins[size] = assy; //Go until out of bounds while (left > 0 && right < N - 1){ left--; right++; size += 2; assy += std::abs(mountains[left] - mountains[right]); mins[size] = std::min(assy, mins[size]); //Only change if the resulting value is lower } } long long mid1 = 0, mid2 = 1; //For even number crop sizes while(mid2 < N){ long long left = mid1, right = mid2; long long size = 2; long long assy = std::abs(mountains[mid1] - mountains[mid2]); mins[size] = std::min(assy, mins[size]); while (left > 0 && right < N - 1){ left--; right++; size += 2; assy += std::abs(mountains[left] - mountains[right]); //Add 2 new outer mountains mins[size] = std::min(assy, mins[size]); //Take min only } mid1++; mid2++; } for (int i = 1; i <= N; i++){ std::cout << mins[i] << ' '; } return 0; }

Recent Posts

See All

CCC 2021 S3 Lunch Concert

#include <iostream> #include <stack> #include <cmath> #include <string.h> #include <algorithm> #include <stack> #include <vector>...

CCC '24 J5 - Harvest Waterloo

#include<iostream> #include <vector> #include <algorithm> #include <cmath> #include <stack> using namespace std; int main() { int r, c,...

CCC '24 J4 - Troublesome Keys

s1 = input() s2 = input() silly = '' silly_o = '' quiete = '-' i = 0 j = 0 while i < len(s1) and j < len(s2): if s1[i] != s2[j]: if...

Commenti


bottom of page