面包人灭灯泡

题目大意

一次面包人做的面包因为灯泡太热而全部烤糊了,面包人十分的伤心。他觉得这一切都是灯泡的错(明明就是你把电灯泡乱放就去秀恩爱),所以,面包人发誓要大闹电灯泡工厂。

电灯泡工厂总共有n个位置,每个位置都有一个电灯泡,每个电灯泡都有两种状态。0表示关,1表示开。面包人觉得这么多电灯泡聚在一起能产生的热量能毁灭世界。面包人为了保卫世界的和平,于是他决定要关掉电灯泡。

当面包人把电灯泡全部关掉的时候,电灯泡工厂就会因为没有热能造电而失去作用,也就是说当电灯泡全部关掉的时候面包人就拯救了世界。

因为面包人是面包人,所以他有三只手,而他每次只能也必须改变三个电灯泡的状态。

然而,电源每秒能产生1xea的热量,当热量达到k时,世界就会砰的一声毁灭了。

那么,现在问题来了(挖掘机到底哪家强?)面包人能不能拯救面包球,如果能,输出最小的时间,否则输出‘lamp kill the world!’不加引号。(当然是蓝翔)

【注意】:所有数据至少包含3个0。

输入格式

输入一行n,k,n为电灯泡工厂的位置的个数,k为面包球所能承受的热量。

一行数字,表示第i个数字表示第i电灯泡的状态,0表示关,1表示开。

输出格式

输出面包人拯救面包球用的时间,如果世界毁灭了,输出’lamp kill the world!’(不加引号)。

输入/输出例子1

输入:

样例一:

 5 1

 0 1 1 0 0

样例二:

5 3

0 1 1 0 0

输出:

样例一:

lamp kill the world!

样例二:

2

样例解释

【样例解释】
样例二:
Time1:0 1 0 1 1 xea:1(time1)
Time2:0 0 0 0 0 xea:2 (time2)

【数据范围】

30%的数据:0<=k<=n<=100
 60%的数据:0<=k<=n<=10000
100%的数据:0<=k<=n<=1000000

#include<bits/stdc++.h>
using namespace std;
int a[10000005]={0,3,2,1};
int main(){
    for(int i=4;i<=2000000;i++)
        a[i]=min(a[i-1]+1,a[i%3]+i/3);
    int n,k,sb=0;
    cin>>n>>k;
    for(int i=1,s;i<=n;i++){
        cin>>s;
        if(s)sb++;
    }
    if(a[sb]<=k)
        printf("%d",a[sb]);
    else 
        cout<<"lamp kill the world!";
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值