题解___CodeForces 558A___2015_10_个人赛_1001
2015-10-11 15:07
417 查看
该题目为模拟题类型
用结构体数组储存数据,并记录负数与正数的个数,再进行由小到大sort()排序,然后对负数数目和正数数目的大小比较进行分类,将小的一边的m树上的苹果数全部加起来,另一边加m+1个树上的苹果
#include <cstdio>
#include <algorithm>
using namespace std;
struct Coor
{
int coordinate;
int apples;
};
Coor coor[105];
bool cmp(const Coor data1, const Coor data2)
{
return data1.coordinate < data2.coordinate;
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int negative_number = 0;
int active_number = 0;
if(n == 0)
printf("0\n");
else
{
for(int i = 0; i < n; i++)
{
scanf("%d",&coor[i].coordinate);
if(coor[i].coordinate < 0)
negative_number++;
else
active_number++;
scanf("%d",&coor[i].apples);
}
sort(coor, coor + n, cmp);
if(negative_number == 0)
printf("%d\n",coor[0].apples);
else if(active_number == 0)
printf("%d\n",coor[n - 1].apples);
else
{
int ans = 0;
int sign;
for(int i = 0; i < n - 1; i++)
{
if(coor[i].coordinate < 0 && coor[i + 1].coordinate > 0)
{
sign = i;
break;
}
}
if(negative_number > active_number)
{
for(int i = sign + 1; i < n; i++)
{
ans += coor[i].apples;
}
for(int i = negative_number - 1; i > n - 2 * active_number - 2; i--)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
else if(negative_number < active_number)
{
for(int i = 0; i < negative_number; i++)
{
ans += coor[i].apples;
}
for(int i = sign + 1; i < 2 * negative_number + 1; i++)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
else
{
for(int i = 0; i < n; i++)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
}
}
}
return 0;
}
用结构体数组储存数据,并记录负数与正数的个数,再进行由小到大sort()排序,然后对负数数目和正数数目的大小比较进行分类,将小的一边的m树上的苹果数全部加起来,另一边加m+1个树上的苹果
#include <cstdio>
#include <algorithm>
using namespace std;
struct Coor
{
int coordinate;
int apples;
};
Coor coor[105];
bool cmp(const Coor data1, const Coor data2)
{
return data1.coordinate < data2.coordinate;
}
int main()
{
int n;
while(scanf("%d",&n) != EOF)
{
int negative_number = 0;
int active_number = 0;
if(n == 0)
printf("0\n");
else
{
for(int i = 0; i < n; i++)
{
scanf("%d",&coor[i].coordinate);
if(coor[i].coordinate < 0)
negative_number++;
else
active_number++;
scanf("%d",&coor[i].apples);
}
sort(coor, coor + n, cmp);
if(negative_number == 0)
printf("%d\n",coor[0].apples);
else if(active_number == 0)
printf("%d\n",coor[n - 1].apples);
else
{
int ans = 0;
int sign;
for(int i = 0; i < n - 1; i++)
{
if(coor[i].coordinate < 0 && coor[i + 1].coordinate > 0)
{
sign = i;
break;
}
}
if(negative_number > active_number)
{
for(int i = sign + 1; i < n; i++)
{
ans += coor[i].apples;
}
for(int i = negative_number - 1; i > n - 2 * active_number - 2; i--)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
else if(negative_number < active_number)
{
for(int i = 0; i < negative_number; i++)
{
ans += coor[i].apples;
}
for(int i = sign + 1; i < 2 * negative_number + 1; i++)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
else
{
for(int i = 0; i < n; i++)
{
ans += coor[i].apples;
}
printf("%d\n",ans);
}
}
}
}
return 0;
}
相关文章推荐
- UVA 12718 Dromicpalin Substrings
- 2017 12 3 个人赛 题目记录 小dp
- 题解___CodeForces 454A___10月___个人赛
- 题解___CodeForces 527A___2015_10_个人赛_1004
- 应用程序域和反射
- JavaScript Core -- 数组
- Map集合的两种取出方式
- poj1062解题报告:
- 关于SVN的介绍
- Remove Element
- Verilog之i2c合约
- iOS9下修改回HTTP模式进行网络请求
- 常用的SQL语句
- 从零开始配置Intellij Idea 14
- attr()与setAttribute()的区别
- 康拓展开(八数码编码、排列组合)
- CocoaPods pod install/pod update更新慢的问题
- C#中var关键字
- final 关键字
- druid加密