第一行输入一个整数
,表示测试用例组数。
每组测试用例格式如下:
第一行输入两个整数
;
第二行输入
个整数
.
对于每组测试用例,输出一行一个整数,表示
的值。
3 3 2 2 0 1 4 1 0 0 0 0 5 3 3 0 0 4 0
1 0 3
对于第一组数据:
,第
项
,
;第
项为
,
,赠出
枚,
;第
项无操作;因此
。
对于第三组数据:
,第
项
,
;第
项各赠出
枚,
;第
项
,
;第
项再赠出
枚,
;因此
。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
while (T --) {
int n,k;
cin >> n >> k;
vector<int> v(n);
int S = 0,cnt = 0;
for (int &num : v) {
cin >> num;
if (num >= k) {
S += num;
}
else if (num == 0 && S >= 1) {
S--;
cnt ++;
}
}
cout << cnt << endl;
}
} #include <stdio.h>
int main()
{
int T=0;
int n=0,k=0;
int cnt=0,S=0;
scanf("%d",&T);
int a[1000000];
for(int t=0;t<T;t++)
{
cnt=0,S=0;
scanf("%d %d",&n,&k);
for(int j=0;j<n;j++)
{
scanf("%d",&a[j]);
if(a[j]>=k)
{
S=S+a[j];
}
else if(a[j]==0&&S>=1)
{
S=S-1;
cnt=cnt+1;
}
}
printf("%d\n",cnt);
}
return 0;
} #include <iostream>
using namespace std;
#include <vector>
int main() {
int T;
cin >> T;
for(int i = 0; i < T; ++i)
{
int n,k;
cin >> n >> k;
int s = 0, cnt = 0;
vector<int> v(n,0);
for(auto& num : v)
{
cin >> num;
if(num >= k) s += num;
if(num == 0 && s >= 1) {s -= 1; cnt += 1;}
}
cout << cnt << endl;
}
}
#include <stdio.h>
int main() {
int T,n,k,a[100];
scanf("%d",&T);
for(int i=0;i<T;i++){
int s=0,cnt=0;
scanf("%d%d",&n,&k);
for(int j=0;j<n;j++)
scanf("%d",&a[j]);
for(int j=0;j<n;j++){
if(a[j]>=k)
s+=a[j];
else if(a[j]==0&&s>=1){
s--;
cnt++;
}
}
printf("%d\n",cnt);
}
return 0;
} #include <stdio.h>
int main() {
int T;
if (scanf("%d", &T) != 1 || T < 1 || T > 10000) {
return 1;
}
for (int i = 0; i < T; i += 1) {
int n, k;
if (scanf("%d %d", &n, &k) != 2 || n < 1 || n > 50 || k < 1 || k > 100) {
return 1;
}
int S = 0, cnt = 0;
for (int j = 0; j < n; j += 1) {
int a;
if (scanf("%d", &a) != 1 || a < 0 || a>100) {
return 1;
}
if (a >= k) {
S += a;
}
if (a == 0 && S >= 1) {
S -= 1;
cnt += 1;
}
}
printf("%d\n", cnt);
}
return 0;
} #include <cassert>
#include <iostream>
int main() {
int T;
std::cin >> T;
assert(1 <= T && T <= 10000);
for (int t = 0; t < T; ++t) {
int n, k;
std::cin >> n >> k;
assert(1 <= n && n <= 50);
assert(1 <= k && k <= 100);
int s = 0, cnt = 0;
for (int i = 0; i < n; ++i) {
int x;
std::cin >> x;
assert(0 <= x && x <= 100);
if (x >= k) {
s += x;
} else if (x == 0 && s >= 1) {
s -= 1;
cnt += 1;
}
}
std::cout << cnt << "\n";
}
return 0;
} 方法2 使用数组 #include <cassert>
#include <iostream>
#include <vector>
int main() {
int T;
std::cin >> T;
assert(1 <= T && T <= 10000);
for (int t = 0; t < T; ++t) {
int n, k;
std::cin >> n >> k;
assert(1 <= n && n <= 50);
assert(1 <= k && k <= 100);
int s = 0, cnt = 0;
std::vector<int> a(n, 0);
for (auto &x : a) {
std::cin >> x;
if (x >= k) {
s += x;
} else if (x == 0 && s >= 1) {
s -= 1;
cnt += 1;
}
}
std::cout << cnt << std::endl;
}
return 0;
} #include <stdio.h>
int main() {
int S=0,cnt=0;
int T;
int n,k;
int a[10000];
scanf("%d",&T);
for (int i=0; i<T; i++) {
S=0;
cnt=0;
scanf("%d %d",&n,&k);
for(int j=0;j<n;j++){
scanf("%d",&a[j]);
if (a[j]>=k) {
S=S+a[j];
}else if (a[j]==0&&S>=1) {
S=S-1;
cnt=cnt+1;
}
}
printf("%d\n",cnt);
}
return 0;
} #include <stdio.h>
int main() {
//定义组数,序列长度,阈值
int g, n, k;
//定义s,cnt,缓存变量接收数字序列
int s, cnt, tmp;
scanf("%d", &g);
int i = 0, j;
while (i++ < g) {
//初始化s,cnt,j
s = 0;
cnt = 0;
j = 0;
scanf("%d %d", &n, &k);
while (j++ < n) {
scanf("%d", &tmp);
if(tmp >= k) s += tmp;
else if( !tmp && s >= 1) {s--; cnt++;}
}
//直接输出cnt
printf("%d\n", cnt);
}
return 0;
} import sys def fn(k,lst): s=cnt=0 for i in lst: if i>=k: s+=i elif i==0 and s>=1: s-=1 cnt+=1 else: continue return cnt datas = [line.strip() for line in sys.stdin][1:] for nums,data in zip(datas[::2], datas[1::2]): n,k = list(map(int,nums.split())) data = list(map(int,data.split())) cnt = fn(k,data) print(cnt)