1333: 找罪犯

来源:互联网 发布:论文数据库 编辑:程序博客网 时间:2024/06/06 18:05

题目

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);        }    }}
原创粉丝点击