KUPC2012 A : アルデンテ

問題概要

配列Xがある。Xの要素のうち、[T-E, T+E]に倍数が含まれるようなものがあればそのインデックスを求める問題。

解法

modとかとらなくても倍数全部調べて自明な枝を刈ればよい。

acceptされたコード

#include <cstdio>
using namespace std;

const int MAX_N = 100;

int N, T, E;
int xs[MAX_N];

void init() {
	scanf("%d%d%d", &N, &T, &E);
	for (int i = 0; i < N; ++i) {
		scanf("%d", xs + i);
	}
}

bool check(int x) {
	for (int y = x; y <= T + E; y += x) {
		if (T - E <= y) {
			return true;
		}
	}
	return false;
}

int solve() {
	for (int i = 0; i < N; ++i) {
		if (check(xs[i])) {
			return i + 1;
		}
	}
	return -1;
}

int main() {
	init();
	printf("%d\n", solve());

	return 0;
}