HDU 6098 Inversion

来源:互联网 发布:适合家政的软件 编辑:程序博客网 时间:2024/06/16 22:26

Inversion

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 963    Accepted Submission(s): 614


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 is Bi+1.
 

Sample Input
241 2 3 441 4 2 3
 

Sample Output
3 4 32 4 4
 

Source
2017 Multi-University Training Contest - Team 6
 

Recommend
liuyiding   |   We have carefully selected several similar problems for you:  6216 6215 6214 6213 6212 
 


找个结构体,里面存上数值和下标,然后俺数值排序,从最大值开始找就可以了

My ugly code

#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <iostream>#include <algorithm>#define ll long longusing namespace std;int T,N;int a,b,c,d,e,f,g;int main(){    scanf("%d",&T);    while(T--){        scanf("%d",&N);        int ans[10];        int kk=0;        for(int i=1;i<=N;i++){            scanf("%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g);            ans[0]=d-g;            ans[1]=e-g;            ans[2]=f-g;            ans[3]=a-ans[0]-ans[2]-g;            ans[4]=b-ans[0]-ans[1]-g;            ans[5]=c-ans[1]-ans[2]-g;            ans[6]=g;            if(ans[0] < 0 || ans[1] < 0 || ans[2] < 0 || ans[3] < 0 || ans[4] < 0 || ans[5] < 0 || ans[6] < 0)                continue ;            int tmp=0;            for(int i=0;i<7;i++)                tmp+=ans[i];            kk=max(kk,tmp);        }        printf("%d\n",kk);    }    return 0;}





原创粉丝点击