1333: 找罪犯

题目

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);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值