A問題
if文で単純に書いた
B問題
大きい順にソートして先頭の数字だけ半分にしてすべて足せばおけ
#include<iostream>
#include <algorithm>
using namespace std;
int a[15] = {};
int main()
{
int n;
int ans = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n, greater<int>());
for (int i = 0; i < n; i++)
{
if (i == 0) {
ans += a[i] / 2;
}
else {
ans += a[i];
}
}
cout << ans << endl;
return 0;
}
C問題
配列をソートして近い数字をK個ずつ取得していき、max とminが一番小さい数字を出力してあげる
#include<iostream>
#include <algorithm>
using namespace std;
#define ll long long
ll l = 1000000007;
ll h[100050] = {};
int main()
{
ll n, k;
ll min = l;
ll ans = 0;
cin >> n >> k;
for (int i = 0; i < n; i++)
{
cin >> h[i];
}
sort(h, h + n);
for (int i = 0; i < n - (k - 1); i++)
{
ll num = 0;
num = h[i + (k - 1)] - h[i];
if (num < min) {
ans = num;
min = num;
}
}
cout << ans << endl;
}
今回のコンテストは比較的簡単だったが、0ペナで30分以内で3完できたのはとてもうれしい
3完安定目指すべ