众所周知,林荫是一个秃头程序员,而他的女神 DJDJ 则是一位美丽的艺术生。为了让女神多看自己一眼,林荫决定提高程序员的自我修养。经过严密的定量分析,林荫意识到只有自己的艺术值达到且恰好为 KK 的时候,最能吸引 DJDJ 的注意力。目前有 NN 种艺术课程,每种课程可以为林荫提供 Val[i]Val[i] 点艺术值。若记林荫初始的艺术值为 00,由于林荫忙于竞赛,且林荫希望自己能多学一些技能,林荫仅能且必须选择三种课程来获得刚好为 KK 的艺术值。请输出所有的课程组合(用一个三元组表示,三个元素分别为所选三种课的编号),并按照课程编号从小到大排序三元组。
输入格式
第一行两个正整数 N,KN,K。
下面一行 NN 个正整数,第 ii 个代表 Val[i]Val[i]。
输出格式
一个正整数代表三元组个数。下面每行输出一个三元组,三个数字间用空格隔开。
数据范围
所有的 Val[i]Val[i] 均小于等于 100000100000 且均不相等。
对于 40%40% 的数据,n \le 100n≤100。
对于 70%70% 的数据,n\le 5000n≤5000。
对于 100%100% 的数据,n\le 10000n≤10000。
提示
数据 1010 较为极限,请注意优化。
输出时每行末尾的多余空格,不影响答案正确。
样例输入复制
5 6
1 2 3 4 5
样例输出复制
1
1 2 3
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100000],cnt=1,f;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int x=1;x<=n;x++)
{
for(int y=x+1;y<=n;y++)
{
for(int z=y+1;z<=n;z++)
{
int ans=y+x+z;
if(ans==k)
{
cout<<cnt<<endl<<x<<" "<<y<<" "<<z<<endl;
cnt++;
f=1;
}
}
}
}
if(f==0)
{
cout<<0;
}
return 0;
}