南邮 OJ 1919 我的故事

来源:互联网 发布:淘宝双十一利弊 编辑:程序博客网 时间:2024/05/18 05:38

我的故事

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 42            测试通过 : 25 

比赛描述

2012就要到了,我打算去超市采购一批食物上船。超市里有一排连续的货架,每个货架上有价值为w的商品。我想只想把中间的某一段连续的货架上的东西都买走。我身上一共有Vmoney,要知道这些钱留下来一点用也没有,所以我想正好一次性用光,到底该可不可以做到呢?

输入

第一行为一个正整数T表示有T组数据

每组数据第一行为两个正整数n,表示有n个货架(0<n<10000) V表示一共有的money(0<V)

接下来的一行有n个整数[w1..wn]

输出

如果可以刚好花完这么多钱输出possible,否则输出impossible

样例输入

2
5 7
1 2 3 4 5
5 8
1 2 3 4 5

样例输出

possible
impossible

提示

 

题目来源

张飞





#include<iostream>using namespace std;#define MAX_N 10000int a[MAX_N];int main(){int T,n,v,i,j,sum;scanf("%d",&T);while(T--){scanf("%d%d",&n,&v);for(i=0; i<n; i++){scanf("%d",a+i);}i = j = 0;sum = a[0];while(1){if(sum>v){sum -= a[i];i++;}else if(sum<v){j++;if(j<n){sum += a[j];}else{break;}}else{break;}}if(sum==v){printf("possible\n");}else{printf("impossible\n");}}}


0 0
原创粉丝点击