【CodeForces-978E】解题报告(暴力,数学)

原始题目

Bus Video System

  • time limit per test1 second
  • memory limit per test256 megabytes
  • inputstandard input
  • outputstandard output

The busses in Berland are equipped with a video surveillance system. The system records information about changes in the number of passengers in a bus after stops.

If x is the number of passengers in a bus just before the current bus stop and y is the number of passengers in the bus just after current bus stop, the system records the number y−x. So the system records show how number of passengers changed.

The test run was made for single bus and n bus stops. Thus, the system recorded the sequence of integers a1,a2,…,an (exactly one number for each bus stop), where ai is the record for the bus stop i. The bus stops are numbered from 1 to n in chronological order.

Determine the number of possible ways how many people could be in the bus before the first bus stop, if the bus has a capacity equals to w (that is, at any time in the bus there should be from 0 to w passengers inclusive).

Input

The first line contains two integers n and w (1≤n≤1000,1≤w≤109) — the number of bus stops and the capacity of the bus.

The second line contains a sequence a1,a2,…,an (−106≤ai≤106), where ai equals to the number, which has been recorded by the video system after the i-th bus stop.

Output

Print the number of possible ways how many people could be in the bus before the first bus stop, if the bus has a capacity equals to w. If the situation is contradictory (i.e. for any initial number of passengers there will be a contradiction), print 0.

Examples

Input

3 5
2 1 -3

Output

3

Input

2 4
-1 1

Output

4

Input

4 10
2 4 1 2

Output

2

Note

In the first example initially in the bus could be 0, 1 or 2 passengers.

In the second example initially in the bus could be 1, 2, 3 or 4 passengers.

In the third example initially in the bus could be 0 or 1 passenger.

题目大意

给定公交车经历的站数和最大容载量,并给出在各个公交站上/下车的人数,求最初车上人数有几种可能。

解题思路

初始sum为0,上下车人数,记录最大值和最小值,计算最大差值,ans=m-(mmax-mmin)+1。

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
#include <queue>
#include <map>
#include <vector>
#include <algorithm>
#define eps 1e-8
#define INF 0x3f3f3f3f
using namespace std;
const int maxn=2e5+5;
typedef long long ll;
ll b[maxn],d[maxn],n,m,t,sum,ans;
int main()
{
while(~scanf("%I64d%I64d",&n,&m))
{
sum=0;
ll mmax=0,mmin=0;
for(int i=1;i<=n;i++)
{
scanf("%I64d",&b[i]);
sum+=b[i];
if(sum>mmax) mmax=sum;
if(sum<mmin) mmin=sum;

}
// printf("%I64d %I64d\n",mmin,mmax);
ll ans=m-(mmax-mmin)+1;
if(ans<=0) printf("0\n");
else printf("%I64d\n",ans);
}
}

收获与反思

  • 简单数学问题