计分板

#include <iostream>

#include <string>

#include <algorithm>

#include <vector>

#include <map>

#include <stdlib.h>

using namespace std;

string stander("C,I,R,U,E");

typedef struct contest

{

    int m_index;//队伍

    int m_dequeIndex;//题目编号

    int m_timer;//时间

    string m_state;//状态

}InfoContest;

typedef struct resultData

{

    int m_index;//队伍

    int m_sumSubject;//题目总数

    int m_sumTime;//总时间

}ResultData;

#define M 100

int resultIndex = 0;

vector<InfoContest> g_source;

ResultData g_dest[M];

vector<ResultData> g_destResult;

void create()

{//测试数据

    InfoContest t1;

    t1.m_index = 1;

    t1.m_dequeIndex = 2;

    t1.m_timer = 10;

    t1.m_state = string("I");

    g_source.push_back(t1);

    

    InfoContest t2;

    t2.m_index = 3;

    t2.m_dequeIndex = 1;

    t2.m_timer = 11;

    t2.m_state = string("C");

    g_source.push_back(t2);

    

    InfoContest t3;

    t3.m_index = 1;

    t3.m_dequeIndex = 2;

    t3.m_timer = 19;

    t3.m_state = string("R");

    g_source.push_back(t3);

    

    InfoContest t4;

    t4.m_index = 1;

    t4.m_dequeIndex = 2;

    t4.m_timer = 21;

    t4.m_state = string("C");

    g_source.push_back(t4);

    

    InfoContest t5;

    t5.m_index = 1;

    t5.m_dequeIndex = 1;

    t5.m_timer = 25;

    t5.m_state = string("C");

    g_source.push_back(t5);

}


bool Comp(const InfoContest &a,const InfoContest &b)

{

    return a.m_index < b.m_index ;

}


void qSort()

{//按选手编号从小到大排序

    sort(g_source.begin(), g_source.end(), Comp);

}



void find()

{//过滤

    int tempIndex = 0;

    for (int i = 0;i < g_source.size();i++)

    {

        for (int j = i;j < g_source.size(); j++)

        {

            if (g_source[i].m_index == g_source[j].m_index)

            {

                if (g_source[j].m_state == "I")

                {

                    

                    g_dest[resultIndex].m_index = g_source[j].m_index;

                    g_dest[resultIndex].m_sumTime +=20;

                    tempIndex = j;

                }

                else if (g_source[j].m_state == "C")

                {

                    g_dest[resultIndex].m_index = g_source[j].m_index;

                    g_dest[resultIndex].m_sumSubject++;

                    g_dest[resultIndex].m_sumTime +=g_source[j].m_timer;

                    tempIndex = j;

                }

            }

        }

        g_destResult.push_back(g_dest[resultIndex]);

        resultIndex++;

        i = tempIndex;

    }

}


bool Comp1(const ResultData &a,const ResultData &b)

{//题目数降序

    return a.m_sumSubject < b.m_sumSubject ;

}

bool Comp2(const ResultData &a,const ResultData &b)

{//时间升序

    return a.m_sumTime > b.m_sumTime ;

}

//打印

void shown()

{

    sort(g_destResult.begin(), g_destResult.end(), Comp1);//题目数降序

    sort(g_destResult.begin(), g_destResult.end(), Comp2);//时间升序

    for (int i = 0;i < g_destResult.size();++i)

    {

                cout<<g_destResult[i].m_index<<endl;

                cout<<g_destResult[i].m_sumSubject<<endl;

                cout<<g_destResult[i].m_sumTime<<endl;

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值