0
点赞
收藏
分享

微信扫一扫

折叠绳子(春季每日一题 44)

农夫约翰有一条长度为 折叠绳子(春季每日一题 44)_枚举 的绳子,可用于农场周围的各种任务。

绳子在不同的位置有 折叠绳子(春季每日一题 44)_i++_02 个绳结,包括两个端点处各有一个。

约翰注意到,在某些位置,他可以将绳子对折,这样,相对的绳索上的绳结就可以彼此完全对齐:

折叠绳子(春季每日一题 44)_数据_03

请帮助约翰统计具有此属性的折叠点数。

允许在某个绳结处折叠,但不允许在端点绳结处折叠。

折叠后,较长的一侧可以有多余节点。

输入格式
第一行包含两个整数 折叠绳子(春季每日一题 44)_i++_02折叠绳子(春季每日一题 44)_枚举

接下来 折叠绳子(春季每日一题 44)_i++_02 行,每行包含一个 折叠绳子(春季每日一题 44)_数据_07 范围内的整数,表示一个绳结的位置。其中两行包含的数字分别是 折叠绳子(春季每日一题 44)_枚举_08折叠绳子(春季每日一题 44)_枚举

输出格式
输出有效折叠位置的数量。

数据范围
折叠绳子(春季每日一题 44)_#include_10
折叠绳子(春季每日一题 44)_i++_11

输入样例:

5 10
0
10
6
2
4

输出样例:

4

样例解释
有效折叠位置为 折叠绳子(春季每日一题 44)_数据_12

#include<iostream>
#include<algorithm>

using namespace std;

const int N = 110;

int n, l;
int a[N];

int main(){

cin >> n >> l;

for(int i = 0; i < n; i++) cin >> a[i];

sort(a, a + n);

int res = 0;
for(int i = 1; i < n - 1; i++){

bool flag = true;

for(int j = i - 1, k = i + 1; j >= 0 && k < n; j--, k++)
if(a[i] - a[j] != a[k] - a[i]){
flag = false;
break;
}

if(flag) res++;
}

for(int i = 1; i < n; i++){

bool flag = true;
int l = i - 1, r = i;
for(int j = l, k = r; j >= 0 && k < n; j--, k++)
if(a[l] - a[j] != a[k] - a[r]){
flag = false;
break;
}

if(flag) res++;
}


cout << res << endl;

return 0;
}


举报

相关推荐

0 条评论