AtCoder Beginners Contest 115
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完安定目指すべ