Sign Flipping

发布于 2020-07-07  0 次阅读


题目大意:

Sign Flipping

给你一个n大小的数组(n一定为奇数),现在你可以改变其中元素的符号(+/-)
在操作后,使得有至少一半的ai <= ai+1,至少有一半ai >= ai+1,现在让你构造出这个数组

思路:

1、直接正负正负(或者负正负正)的一直下去,由于n为奇数,那么肯定就满足条件
2、直接在全取绝对值,然后正负正负(或者负正负正)。

AC Code:

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        int n, a[109]={0};
        cin>>n;
        for(int i=0; i<n; i++){
            cin>>a[i];
            if(i&1 && a[i]<0)
                a[i]=a[i]*-1;
            else if(!(i&1) && a[i]>0)
                a[i]=a[i]*-1;
        }
        for(int i=0; i<n; i++){
            cout<<a[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

平平无奇的在校大学生