cf B. Valera and Contest
http://codeforces.com/contest/369/problem/B
先对k个处理,先处理sk%k个为sk/k+1,如果sk/k==0,k个数都为sk/k;对与剩下的数也按照同样的方法处理,处理完之后就是所要求的序列。
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 10000 5 using namespace std; 6 7 int n,k,l,r,s1,s2; 8 int a[maxn]; 9 10 int main() 11 { 12 while(scanf("%d%d%d%d%d%d",&n,&k,&l,&r,&s1,&s2)!=EOF) 13 { 14 int cnt=0; 15 int i; 16 for(i=1; i<=s2%k; i++) 17 { 18 a[cnt++]=s2/k+1; 19 } 20 for(; i<=k; i++) 21 { 22 a[cnt++]=s2/k; 23 } 24 if(n!=k) 25 { 26 int m=n-k; 27 int s3=s1-s2; 28 for(i=1; i<=s3%m; i++) 29 { 30 a[cnt++]=s3/m+1; 31 } 32 for(; i<=m; i++) 33 { 34 a[cnt++]=s3/m; 35 } 36 } 37 for(int i=0; i<n; i++) 38 { 39 printf("%d ",a[i]); 40 } 41 printf("\n"); 42 } 43 return 0; 44 }