容器

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;

struct node{
    int t1;
    int t2;
};

vector<node>Q[100005];
__int64 sum[100005],s;

int cmp(node a,node b)
{
    if(a.t1<b.t1)
     return 0;
    else
     return 1;
}

int main()
{
    int T,n,m,q,i,j,k,l,bianhao,num,max;
    int cao;
    struct node temp;
    scanf("%d",&T);
    for(l=1;l<=T;l++)
    {
        max=-1;
        scanf("%d%d%d",&n,&m,&q);
        for(i=1;i<=n;i++)
        Q[i].clear();
        while(m--)
        {
            scanf("%d%d%d",&bianhao,&temp.t1,&temp.t2);
            Q[bianhao].push_back(temp);
            cao=Q[bianhao].size();
            if(cao>max)
             max=cao;
        }
        for(i=1;i<=n;i++)
         sort(Q[i].begin(),Q[i].end(),cmp);
         printf("Case #%d:\n",l);
        num=0;sum[0]=0;
        for(i=1;i<=max;i++)
        {
            s=0;
            for(j=1;j<=n;j++)
             if(Q[j].size()>=i)
              s+=Q[j][i-1].t2;
            sum[i]=sum[i-1]+s;
        }
        while(q--)
        {
            scanf("%d",&k);
            if(k<=max)
             printf("%I64d\n",sum[k]);
            else
             printf("%I64d\n",sum[max]);
        }
    }
    return 0;
}

 

posted on 2013-09-29 21:03  后端bug开发工程师  阅读(203)  评论(0编辑  收藏  举报

导航