895A. Pizza Separation#分披萨问题(前缀和)

题目出处:http://codeforces.com/problemset/problem/895/A
题目大意:对于给出的一些角度的披萨分成两份,取最小角度差
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//Pizza Separation
int main(){
    int n;
    scanf("%d",&n);
    int *a = (int*) malloc (n * sizeof(int));
    int i;
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    if(n==1){
        printf("360\n");
        return 0;
    }
    //前缀和 
    for(i=1;i<n;i++){
        a[i] += a[i-1];
    }
    int part1,part2,ans=360;
    for(i=0;i<n-1;i++){
        for(int j=i+1;j<n;j++){
            part1 = abs(a[i] - a[j]);
            if(part1==180){
                printf("0\n");
                return 0;
            }else{
                part2 = 360-part1;
                int  t = abs(part1 - part2);
                ans = ans<t ? ans:t;
            }
        }
    }
    printf("%d",ans);
    return 0;
}

 本题是本人在codeforces第一个解决的问题,很有意义,全程暴力不解释

posted @ 2017-12-03 08:43  hello_OK  阅读(355)  评论(0编辑  收藏  举报