1333: 找罪犯

xiaoxiao2021-02-28  53

题目

Description

有n个城市,编号为1到n。城市i到j的距离等于|i-j|。 马克是个警察。他住在一个城市里,他的工作是抓罪犯。对于他说这是很困难的,因为他不知道哪个城市的罪犯。虽然,他知道每个城市最多一个罪犯。 马克使用一种先进仪器BCD(刑事检测器)。BCD会告诉马克,距离马克为0,1,2…的城市分别有多少罪犯,马克可以赶到每个城市,他肯定要有一个刑事犯罪。 当然你知道哪座城市里有罪犯。计算马克使用BCD能抓捕到的罪犯数。 Input

多组输入 输入的第一行包含两个整数n和a(1≤a≤n≤100)城市数量和马克居住的城市。 第二行包含n个整数t1,t2,…,tn(0≤ti≤1)。在第i个城市有ti个罪犯。

Output

输出马克抓捕的罪犯数量。

Sample Input

6 3 1 1 1 0 1 0 5 2 0 0 0 1 0 Sample Output

3 1 HINT

在第一个例子中,有6个城市,BCD会给马克的信息

距离马克0的城市有一个罪犯,马克会确定t3会有罪犯

距离马克1的城市有一个罪犯,马克不确定t2,t4哪座城市有罪犯

距离马克2的城市有两个罪犯,马克会确定t1和t5都会有罪犯

距离更大的城市为0个罪犯

所以第一个例子中输出结果为3,只有t1,t3,t5三个城市确定有罪犯

第二个例子中,BCD会给出只有距离为2的城市有一个罪犯,距离马克为2的城市也只有一个,所以第二个例子输出结果为1


代码块

import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner cn = new Scanner(System.in); while (cn.hasNext()) { int n = cn.nextInt(); int a = cn.nextInt(); int[] t = new int[n]; for (int i = 0; i < n; i++) { t[i] = cn.nextInt(); } int count = 0; if (t[a - 1] > 0) count++; int i = a - 2, j = a; for (;; i--, j++) { if (i < 0 || j >= n) break; if (t[i] + t[j] > 1) { count += 2; } } while (i >= 0) { if (t[i] > 0) count++; i--; } while (j < n) { if (t[j] > 0) count++; j++; } System.out.println(count); } } }
转载请注明原文地址: https://www.6miu.com/read-53614.html

最新回复(0)