codeforces 301 A Yaroslav and Sequence

1506 단어 codeforces
오늘 부었나?처음에는 문제의 뜻을 이해하지 못해서 물문제인 줄 알았는데 웨이를 한 번 냈어요. 다시 보니까 문제가 틀렸어요. 고쳐서 낼까요, 웨이를 낼까요...문제를 보고 드디어 문제를 알아봤지만 샘플을 잘못 계산해서 문제를 잘못 본 줄 알았어요..계속 보고 또 보고, 몇 시간이 지났는데도 못 알아봤어...<중간에 회의도 하고 남의 블로그도 좀 봤어요>...자기가 잘못 계산했구나.앞으로 꼭 손을 써야 하는데,
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <string>
#define LL long long
#define DB double
using namespace std;
const int N = 2009;
int re[N];
int get(int n)
{
    int ret =0 ;
    for(int i=0;i<n;i++) ret+=re[i];
    return ret;
}
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("in.txt","r",stdin);
    #endif
    int ans = 0;
    int n;scanf("%d",&n);
    for(int i=0;i<(n<<1)-1;i++) scanf("%d",&re[i]);
    if(n&1)
    {
        for(int i=0;i<(n<<1);i++)
        ans += abs(re[i]);
    }else
    {
        int x =0 ;
        for(int i=0;i<(n<<1);i++) if(re[i]<0) x++;
        if(x&1)
        {
            int x = 0x3f3f3f3f;
            for(int i=0;i<(n<<1)-1;i++)
            {
                x = min(x,abs(re[i]));
            }
            for(int i=0;i<(n<<1);i++) ans+=abs(re[i]);
            ans -= 2*x;
        }else
        {
            for(int i=0;i<(n<<1);i++) ans+=abs(re[i]);
        }
    }
    cout<<ans<<endl;
    return 0;
}

좋은 웹페이지 즐겨찾기