読者です 読者をやめる 読者になる 読者になる

PCK2015プログラミング部門予選に参加した話

参加記

5完

こんにちは。kurokojiです。

今回、PCK2015プログラミング部門の予選にチーム「\x00」として緑林檎先輩と参加しました。

一番最初に書いてあるように5完です。

とりあえずやったことを書いていきます。

ぼく:問1,2,3を先輩の言葉を頂きながら解く。

問1

#include <stdio.h>

int main(void)
{
	int p, m, c;
	
	scanf("%d %d %d", &p, &m, &c);
	
	printf("%d\n", p + m + c);
	
	return (0);
}

問2

#include <stdio.h>

int main(void)
{
	int h, h1, h2;
	int k, k1, k2;
	int a, b, c, d;
	
	scanf("%d %d", &h1, &h2);
	scanf("%d %d", &k1, &k2);
	scanf("%d %d %d %d", &a, &b, &c, &d);
	
	h = h1 * a + h2 * b + (h1 / 10) * c + (h2 / 20) * d;
	k = k1 * a + k2 * b + (k1 / 10) * c + (k2 / 20) * d;
	
	if (h > k){
		printf("hiroshi\n");
	}
	else if (h < k){
		printf("kenjiro\n");
	}
	else {
		printf("even\n");
	}
	
	
	return (0);
}

問3

#include <stdio.h>

int main(void)
{
	int D, L;
	
	scanf("%d %d", &D, &L);
	
	printf("%d\n", (D % L) + (D / L) ); 
	
	return (0);
}

緑林檎先輩:問4,5を解く。問5において、デバッグ(?)に時間がかかった。

問4

#include <stdio.h>

int N[100][3];

int main(void)
{
	int n, x;
	int i, j;
	int d;
	int t = 0;
	
	scanf("%d", &n);
	
	for (j = 0; j < 3; j++){
		scanf("%d", &x);
		for (i = 0; i < x; i++){
			scanf("%d", &d);
			N[d - 1][j] = 1;
		}
	}
	
	for (i = 0; i < n; i++){
		if ((N[i][0] != 1 && N[i][2] == 1) || (N[i][1] == 1 && N[i][2] == 1)){
			t++;
		}
	}
	
	printf("%d\n", t);
	
	
	return (0);
}

問5

#include <stdio.h>

int p[100];

int main(void)
{
	int n;
	int max = 0;
	int c;
	int i, j;
	
	scanf("%d", &n);
	for (i = 0; i < n; i++){
		scanf("%d", &p[i]);
	}
	
	for (j = n; j >= 0; j--){
		c = 0;
		for (i = 0; i < n; i++){
			if (j <= p[i]){
				c++;
			}
		}
		if (j <= c){
			max = j;
			break;
		}
	}
	
	printf("%d\n", max);
	
	return (0);
}

問6~10が上位との分かれ目になるだろう(実行時間に制限がある)。

問6「品質管理」では、実行時間を縮めるやり方を見つけられず断念。

問7にも触れたが時間が無かった。

予選を通して感じたのは、国語力(読解力)不足だったことです。

次回は6完以上出来るように、問題点である読解力不足をAOJ等の問題をたくさん解き、慣れるようにしたいです。