2017 Multi-University Training Contest

来源:互联网 发布:mac电源循环计数 编辑:程序博客网 时间:2024/05/22 12:33

题目:

Problem Description
Give an array A, the index starts from 1.
Now we want to know Bi=maxijAj , i2.
 

Input
The first line of the input gives the number of test cases T; T test cases follow.
Each case begins with one line with one integer n : the size of array A.
Next one line contains n integers, separated by space, ith number is Ai.

Limits
T20
2n100000
1Ai1000000000
n700000
 

Output
For each test case output one line contains n-1 integers, separated by space, ith number isBi+1.
 

Sample Input
241 2 3 441 4 2 3
 

Sample Output
3 4 32 4 4
题意:求出B_i+1数组,i从2开始,max{A_j}(i%j!=0)

思路:写个结构体,用x记录A的值,pos记录在A中的位置,排序,从大到小找符合条件的,输出。。。签到题

code:

#include<bits/stdc++.h>using namespace std;int a[100005];struct node{        int x,pos;}b[100005];int cmp(node a,node b){        if(a.x<b.x) return 1;        return 0;}int main(){        int t,n,i,j;        scanf("%d",&t);        while(t--){                scanf("%d",&n);                for(i=1;i<=n;i++){                        scanf("%d",&a[i]);                        b[i].x=a[i];                        b[i].pos=i;                }                sort(b+1,b+n+1,cmp);                for(i=2;i<=n;i++){                        j=n;                        while(b[j].pos%i==0) j--;                        if(i!=n) printf("%d ",b[j].x);                        else printf("%d\n",b[j].x);                }        }        return 0;}


原创粉丝点击