比赛 |
NOIP2015普及组练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
分组 |
最终得分 |
100 |
用户昵称 |
ミント |
运行时间 |
0.010 s |
代码语言 |
C++ |
内存使用 |
4.83 MiB |
提交时间 |
2015-11-02 18:37:53 |
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
ifstream fin("dataa.in");
ofstream fout("dataa.out");
const int maxm = 10 + 5;
const int bignum = 100000;
int n, m;
int kount = 0;
int sum = 0;
int now = 0;
int num[maxm];
int ans[bignum][maxm];
bool vis[maxm][maxm];
void dfs(int x, int y)
{
if(x==m)
{
num[m] = n - now;
if(num[m]>=num[m-1])
{
kount++;
for(int i=1;i<=m;i++)
ans[kount][i] = num[i];
}
}
else
{
for(int i=y;i<=n-m+1;i++)
{
num[x] = i;
now = now + i;
if(now<=n)
dfs(x+1, i);
now = now - i;
}
}
}
int main()
{
//memset(vis, false, sizeof(vis));
fin>>n>>m;
dfs(1, 1);
fout<<kount<<endl;
for(int i=1;i<=kount;i++)
{
for(int j=1;j<=m;j++)
fout<<ans[i][j]<<' ';
fout<<endl;
}
fin.close();
fout.close();
return 0;
}