首页 > 代码库 > hdu 3015 树状数组+离散化
hdu 3015 树状数组+离散化
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
struct data
{
__int64 order;
__int64 orign;
__int64 rank;
};
data heigh[100100], coor[100100];
int cmp(const void *a, const void *b)
{
return ( (*(data *)a).order - (*(data *)b).order );
}
int cmp1(const void *a, const void *b)
{
return (*(data *)a).orign - (*(data *)b).orign;
}
/*__int64 cmp1(const void *a, const void *b)
{
}*/
int main()
{
freopen("read.txt", "r", stdin);
__int64 n;
while(~scanf("%d", &n) )
{
for(int i=1; i<=n; i++)
{
scanf("%I64d", &coor[i].orign);
scanf("%I64d", &heigh[i].orign);
coor[i].order = i;
heigh[i].order = i;
}
qsort(coor, n, sizeof(coor[0]), cmp1);
qsort(heigh, n, sizeof(heigh[0]), cmp1);
int sign1, sign2, flag1, flag2;
sign1 = sign2 = 1;
flag1 = coor[1].orign, flag2 = heigh[1].orign;
for(int i=1; i<=n; i++)
{
if(coor[i].orign != flag1)
{
flag1 = coor[i].orign;
coor[i].rank = i+1;
sign1 = i+1;
}
else
coor[i].rank = sign1;
if(heigh[i].orign != flag2)
{
flag2 = heigh[i].orign;
heigh[i].rank = i+1;
sign2 = i+1;
}
else
heigh[i].rank = sign2;
}
//qsort(coor, n, sizeof(coor[0]), cmp);
//qsort(heigh, n, sizeof(heigh[0]), cmp);
//前面是对的, 但是我不知道怎么离散化。
}
return 0;
}
来自为知笔记(Wiz)
附件列表
hdu 3015 树状数组+离散化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。