Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39905
  • 博文数量: 22
  • 博客积分: 1130
  • 博客等级: 少尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-11 17:20
文章分类

全部博文(22)

文章存档

2010年(3)

2009年(19)

我的朋友
最近访客

分类:

2009-11-08 16:20:17

C++ Ac g++ WA  晕

//9972K    1250MS

//C++
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <vector>
using namespace std;

const int MAX=500001;
typedef struct _node{
    int qi,si,vi;
}Node;

Node In[MAX];
int Qi[MAX];
int Qii[MAX];
int Si[MAX];
int Sii[MAX];

int N;
int SN,QN;

int cmp(const void* a,const void* b)
{
    Node* ap=(Node*)a;
    Node* bp=(Node*)b;
    if(ap->si!=bp->si)
        return ap->si-bp->si;
    return ap->qi-bp->qi;
}

int cmpsi(const void* a,const void* b)
{
    return *(int*)a-*(int*)b;
}

int main()
{
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        scanf("%d%d%d",&In[i].qi,&In[i].si,&In[i].vi);
        Qi[i]=In[i].qi;
        Si[i]=In[i].si;
    }

    qsort(In,N,sizeof(In[0]),cmp);
    qsort(Qi,N,sizeof(Qi[0]),cmpsi);
    qsort(Si,N,sizeof(Si[0]),cmpsi);

    Sii[0]=Si[0];
    Qii[0]=Qi[0];
    SN=QN=0;
    for(int i=1;i<N;i++)
    {
        if(Qi[i]!=Qii[QN])
            Qii[++QN]=Qi[i];
        if(Si[i]!=Sii[SN])
            Sii[++SN]=Si[i];
    }
    SN++;
    QN++;
    
    printf("-1 ");
    for(int i=0;i<QN;i++)
        printf("%d ",Qii[i]);
    printf("\n");

    int item=0;
    for(int i=0;i<SN;i++){
        printf("%d ",Sii[i]);
        for(int j=0;j<QN;j++){
            if(In[item].qi!=Qii[j]||In[item].si!=Sii[i])
                printf("0 ");
            else{
                int sum=0;
                while(In[item].qi==Qii[j]&&In[item].si==Sii[i]&&item<N)
                {
                    sum+=In[item].vi;
                    item++;
                }
                printf("%d ",sum);
            }
        }
        printf("\n");
    }
    return 0;
}


阅读(296) | 评论(0) | 转发(0) |
0

上一篇:POJ 2377

下一篇:POJ 2376

给主人留下些什么吧!~~