Longest Arithmatic
Description


Submission
#include <iostream>
#include <vector>
using namespace std;
int solve(vector<int>& nums)
{
if(nums.size() <= 2) return nums.size();
int step = 0, count = 1, maxCount = 1;
for(int i = 1; i < nums.size(); ++i) {
if(nums[i] - nums[i - 1] == step) {
count++;
}
else {
step = nums[i] - nums[i-1];
count = 2;
}
maxCount = max(count, maxCount);
}
return maxCount;
}
int main() {
int T; cin >> T;
for(int Ti = 0; Ti < T; ++Ti) {
int N; cin >> N;
vector<int> nums(N);
for(int i = 0; i < N; ++i) {
cin >> nums[i];
}
cout << "Case #" << Ti + 1 << ": " << solve(nums) << "\n";
}
return 0;
}
High Buildings


Submission
#include <iostream>
#include <vector>
using namespace std;
vector<int> solve(int n, int a, int b, int c) {
if(n == 1) {
if(a == 1 && b == 1 && c == 1) return {1};
return {};
}
int unique_a = a - c;
int unique_b = b - c;
int total_min = unique_a + unique_b + c;
if(total_min > n) return {};
vector<int> res;
for(int i = 0; i < unique_a; ++i) {
res.push_back(n - 1);
}
int n_padding = n - total_min;
bool padded = false;
if(!padded && unique_a > 0) {
for(int i = 0; i < n_padding; ++i) {
res.push_back(1);
}
padded = true;
}
for(int i = 0; i < c; ++i) {
if(!padded && i == 1) {
for(int i = 0; i < n_padding; ++i) {
res.push_back(1);
}
padded = true;
}
res.push_back(n);
}
if(!padded && unique_b > 0) {
for(int i = 0; i < n_padding; ++i) {
res.push_back(1);
}
padded = true;
}
for(int i = 0; i < unique_b; ++i) {
res.push_back((n - 1));
}
if(!padded) return {};
return res;
}
int main() {
int T; cin >> T;
for(int Ti = 0; Ti < T; ++Ti) {
int N, A, B, C;
cin >> N >> A >> B >> C;
cout << "Case #" << Ti + 1 << ":";
auto res = solve(N, A, B, C);
if(res.empty()) {
cout << " IMPOSSIBLE\n";
continue;
}
for(int i = 0; i < res.size(); ++i) {
cout << " " << res[i];
}
cout << "\n";
}
return 0;
}
I forgot the time and was one hour and half late. Although some people can make it within that time, I failed.ðŸ˜
Anyways, I’m making progress!
