您的位置:首页 > 其它

Codeforces Round #297 (Div. 2)C. Ilya and Sticks

2015-05-31 08:25 316 查看
题意:给你n 个木头的长度 , 问你组成矩形的最大总面积为多少, 且木头长度L 可以当作L-1 来使用。

题解:很显然 组成矩形要保证总面积最大 只有大的和大的边组成才能保证面积最大,并且如果当前大的为偶数条那么不需要变成-1 否则变成减1 从头到尾扫一遍 没了

代码:

#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std; 
__int64 value[1000005]; 
int main()
{
    int n;
    while(scanf("%d", &n) != EOF)
    {
        for(int i = 0; i < n; i++)
        scanf("%I64d", &value[i]);    
        sort(value, value + n);
        __int64 w = 0, sum = 0; 
        int i = n-1; 
        while(i >= 0)
        {
            //printf("%d\n", i); 
            if(value[i] == value[i-1]+1 || value[i] == value[i-1])
            { 
               if(w == 0)
               {
                  w = value[i-1];     
               }            
               else 
               {
               //   printf("%I64d %I64d\n", w, value[i-1]); 
                  sum += (w * value[i-1]);   
                  w = 0;  
               } 
               i -= 2; 
              // printf("%I64d\n", w); 
            }        
            else i -= 1; 
        }            
        printf("%I64d\n", sum); 
    }    
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: