-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMPLS.cpp
73 lines (58 loc) · 1.2 KB
/
CMPLS.cpp
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <vector>
using namespace std;
int temp[102][102];
int validate(int temp1[102],int level1,int s)
{
for(int i=0;i<s-level1-1;i++)
if(temp1[i]!=temp1[i+1])
return 1;
return 0;
}
int MOD(int seq[102],int s, int c){
int i;
for(i=0;i<s;i++){
temp[0][i] = seq[i];
}
int order,idx;
int flag=true;
int level=1;
while(flag)
{
for(int i=0;i<s-level;i++)
temp[level][i]=temp[level-1][i+1]-temp[level-1][i];
flag=validate(temp[level],level,s);
if(flag)
level++;
}
for(int i=s-level;i<s-level+c;i++)
{
temp[level][i]=temp[level][i-1];
}
for(int i=level-1;i>=0;i--)
{
for(int j=s-i;j<s-i+c;j++)
{
temp[i][j]=temp[i][j-1]+temp[i+1][j-1];
}
}
}
int main(){
int t,s,c;
scanf("%d",&t);
int e;
for(int i=0;i<t;i++){
scanf("%d %d",&s,&c);
int seq[102];
for(int j=0;j<s;j++){
scanf("%d",&e);
seq[j] = e;
}
MOD(seq,s, c);
for(int j=s;j<s+c;j++){
if(j!=s)printf(" ");
printf("%d",temp[0][j]);
}
printf("\n");
}
}