问题描述
  某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量。
  该程序的输入由很多行构成,每一行为一条记录,记录可能有以下几种:
  1. buy p s 表示一个购买股票的买单,每手出价为p,购买股数为s。
  2. sell p s 表示一个出售股票的卖单,每手出价为p,出售股数为s。
  3. cancel i表示撤销第i行的记录。
  如果开盘价为p0,则系统可以将所有出价至少为p0的买单和所有出价至多为p0的卖单进行匹配。因此,此时的开盘成交量为出价至少为p0的买单的总股数和所有出价至多为p0的卖单的总股数之间的较小值。
  你的程序需要确定一个开盘价,使得开盘成交量尽可能地大。如果有多个符合条件的开盘价,你的程序应当输出最高的那一个。
输入格式
  输入数据有任意多行,每一行是一条记录。保证输入合法。股数为不超过108的正整数,出价为精确到恰好小数点后两位的正实数,且不超过10000.00。
输出格式
  你需要输出一行,包含两个数,以一个空格分隔。第一个数是开盘价,第二个是此开盘价下的成交量。开盘价需要精确到小数点后恰好两位。
样例输入
buy 9.25 100
buy 8.88 175
sell 9.00 1000
buy 9.00 400
sell 8.92 400
cancel 1
buy 100.00 50
样例输出
9.00 450
评测用例规模与约定
  对于100%的数据,输入的行数不超过5000。
解题思路:
开盘价只能是buy和sell中的某个价格,又由于如果可成交股数相同则需要输出成交价较大的那个作为开盘价,因此只在 buy命令中寻找开盘价即可,这样既保证了题目要求,又减少了时间开支。
写完代码提交时只有80分,后来对所有命令的出价进行降序排序,再次提交还是80分,可见排序对此题也没用。始终不知道问题出在哪里。下面给出80分版本的代码:
 #include <stdio.h>
#include <string.h> struct charge{
char tra[];
float price;
long long num;
};
struct charge order[]; int main(int argc, const char * argv[]) {
int i ,j ,k = ;
int line ;
long long maxNum= ;
float p0 = 0.0 , flag = 0.0;
while(scanf("%s" , order[k].tra )!= EOF)
{//输入记录
if(strcmp("buy" , order[k].tra)== || strcmp("sell" , order[k].tra) == ){
scanf("%f%lld" , &order[k].price, &order[k].num);
}
if(strcmp("cancel" , order[k].tra)==){
scanf("%d",&line);//要撤销的行
order[k].price = 0.0 ;//cancel 密令下没有价格和数量,都设置为 0
order[k].num = ;
order[line].price = 0.0 ;//将需要撤销的命令的价格、数量设置为0,等于取消操作
order[line].num = ;
}
k ++;
}
for(i = ; i < k ;i++)
{//按出价降序排序
int index;
float max ;
struct charge temp;
max = order[i].price;
for(j = i+ ; j < k ;j++)
{
if(order[j].price >= max){
max = order[j].price;
index = j ;
}
}
temp = order[i];
order[i] = order[index];
order[index] = temp;
}
for(i = ; i <k ; i ++)
{//检查每一行命令,设置buy 的命令的价格作为开盘价
long long sellNum= , buyNum= ,num;
if(strcmp(order[i].tra , "buy")==)
p0 = order[i].price ;
else continue ;
for(j = ; j < k ; j++)
{//如果以 p0 为开盘价,检查所有交易命令。
if(strcmp(order[j].tra , "buy")== && order[j].price >= p0){
buyNum += order[j].num;//对于 buy ,如果出价大于等于 p0,则购入所需股数
}
if(strcmp(order[j].tra , "sell")== && order[j].price <= p0){
sellNum += order[j].num;//对于sell 命令,如果出价小于等于 p0 ,则出售所要出售的股数
}
}
num = (buyNum >= sellNum )? sellNum : buyNum;//能够成交的股数应该是购入和出售之间较小的那个数量
if(num > maxNum){ maxNum = num ; flag = p0;}//寻找最大的那个能成交的股数
}
printf("%.2f %lld\n", flag , maxNum) ;
return ;
}

明天CCF考试,求过~~~

CCF2014123集合竞价(C语言版)的更多相关文章

  1. libnode 0.4.0 发布,C++ 语言版的 Node.js

    libnode 0.4.0 支持 Windows ,提升了性能,libuv 更新到 0.10.17 版本,libj 更新到 0.8.2 版本. libnode 是 C++ 语言版的 Node.js,和 ...

  2. md5加密算法c语言版

    from: http://blog.sina.com.cn/s/blog_693de6100101kcu6.html 注:以下是md5加密算法c语言版(16/32位) ---------------- ...

  3. 基于gSOAP使用头文件的C语言版web service开发过程例子

    基于gSOAP使用头文件的C语言版web service开发过程例子 一服务端 1 打开VS2005,创建一个工程,命名为calcServer. 2 添加一个头文件calc.h,编辑内容如下: 1// ...

  4. Windows 8.1 with Update 镜像下载(增OEM单语言版)

    该系统已有更新的版本,请转至<Windows 8.1 with update 官方最新镜像汇总>下载. 2014年4月9日凌晨,微软向MSDN订阅用户开放了Windows 8.1 with ...

  5. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  6. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  7. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  8. VS2015如何新建C++或者C语言版的lib文件

    当我们不想公开我们的代码的时候,可以把我们的代码封装成静态数据连接库,即lib文件.下面介绍下如何生成lib文件. 以VS2015为例,一种是C++版的lib文件,一种是C语言版的lib文件. 一.按 ...

  9. hbase rest api接口链接管理【golang语言版】

    # go-hbase-resthbase rest api接口链接管理[golang语言版]关于hbase的rest接口的详细信息可以到官网查看[http://hbase.apache.org/boo ...

  10. 2048小游戏代码解析 C语言版

    2048小游戏,也算是风靡一时的益智游戏.其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练.本篇分析2048小游戏的C语言实现代码. 前言 游戏截图:  游 ...

随机推荐

  1. Kafka工作原理解析以及主要配置详解

    Kafka工作原理解析以及主要配置详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 无论是是Kafka集群,还是producer和consumer都依赖于Zookeeper集群保 ...

  2. 多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c

    /* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include &l ...

  3. Request库学习

    0x00前言 这库让我爱上了python  碉堡! 开心去学了一些python,然后就来学这个时候神库~~ 资料来源:http://cn.python-requests.org/en/latest/u ...

  4. jenkins在windows平台自动化构建代码

    jenkins服务端:centos6.8 客户端:windows server2012 windows10 工具:cwRsync 注:复制为jenkins工作目录到网站目录,无需服务端. 1.安装je ...

  5. .NET面试题系列(十一)WinDbg、Perfmon

    WinDbg 资料 https://www.cnblogs.com/sheng-jie/p/9503650.html https://www.cnblogs.com/yudongdong/p/9701 ...

  6. js委托事件和代理事件

    转载出处:https://www.cnblogs.com/liugang-vip/p/5616484.html js中的事件委托或是事件代理详解 起因: 1.这是前端面试的经典题型,要去找工作的小伙伴 ...

  7. logback配置按天产生日志文件

    1 依赖Jar包 pom配置 也可以根据自己的版本来 <dependency> <groupId>org.slf4j</groupId> <artifactI ...

  8. Vue.js用脚手架创建项目

    安装全局脚手架 cnpm install vue-cli -g vue --version 用脚手架创建项目 创建项目 运行项目 停止项目:Ctrl+C 修改端口 config - index.js ...

  9. mysql 开源~canal维护相关问题

    一 简介:咱们来讨论下canal的一些技巧 二 场景 场景1 canal过滤指定库后,后端java调用读取相关数据时候出现大量的空事务,为何会出现空事务呢,空事务是由于配置了指定的过滤规则,导致了其他 ...

  10. Caffe源码阅读(1) 全连接层

    Caffe源码阅读(1) 全连接层 发表于 2014-09-15   |   今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src ...