Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <climits>
- #include <algorithm>
- #include <vector>
- #include <map>
- using namespace std;
- long long f(int k, long long n){
- return (k - 2) * n * (n + 1) / 2 - (k - 3) * n;
- }
- int main(){
- int N,K[50],s;
- bool first = true;
- long long nxt[50];
- int pos[50];
- while(true){
- scanf("%d",&N);
- if(N == 0) break;
- for(int i = 0;i < N;++i)
- scanf("%d",&K[i]);
- scanf("%d",&s);
- if(!first) printf("\n");
- first = false;
- int cont = 0;
- for(int i = 0;i < N;++i){
- pos[i] = 1;
- nxt[i] = f(K[i],1);
- }
- while(cont < 5){
- long long cur = nxt[0];
- for(int i = 1;i < N;++i)
- cur = min(cur,nxt[i]);
- int aux = 0;
- vector<int> occ;
- for(int i = 0;i < N;++i){
- if(nxt[i] == cur){
- nxt[i] = f(K[i],++pos[i]);
- occ.push_back(K[i]);
- ++aux;
- }
- }
- if(aux >= 2 && cur >= s){
- printf("%lld:",cur);
- for(int i = 0;i < aux;++i){
- if(i > 0) putchar(' ');
- printf("%d",occ[i]);
- }
- printf("\n");
- ++cont;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment