ぐってぃのプログラミング日記

競技プログラミングやIT関係の記事を書いていくよ

AtCoder Beginners Contest 115

abc115.contest.atcoder.jp

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完安定目指すべ