前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Atcoder Beginner Contest 113 C. ID(模拟)

Atcoder Beginner Contest 113 C. ID(模拟)

作者头像
Ch_Zaqdt
发布2019-01-11 10:50:09
4660
发布2019-01-11 10:50:09
举报
文章被收录于专栏:Zaqdt_ACMZaqdt_ACMZaqdt_ACM

题目链接:https://abc113.contest.atcoder.jp/tasks/abc113_c

       题意是有n个城市,m个县,每个县都有一个权值,现在让根据第i个城市的所有县的权值进行编号,比如第一个样例,先输入n和m,然后输入该县所在城市,然后输入这个县的权值,第一个城市有两个县,然后根据权值编号1和2,然后按题目要求格式输出就好了。

       写法就是一个模拟吧,先按权值排序,把编号改一下,再按输入的顺序排个序输出出来就好了。


AC代码:

#include <bits/stdc++.h>
using namespace std;
int n,m;
struct Node{
	int x,y,num;
}Edge[100005];

bool cmp(Node a,Node b){
	if(a.x == b.x){
		return a.y < b.y;
	}
	return a.x < b.x;
}

bool cmp1(Node a,Node b){
	return a.num < b.num;
}

int main()
{
	scanf("%d%d",&n,&m);
	for(int i=0;i<m;i++){
		scanf("%d%d",&Edge[i].x,&Edge[i].y);
		Edge[i].num = i;
	}
	sort(Edge,Edge+m,cmp);
	int num = 1;
	for(int i=0;i<m-1;i++){
		if(Edge[i].x == Edge[i+1].x){
			Edge[i].y = num++;
		}
		else{
			Edge[i].y = num;
			num = 1;
		}
	}
	if(Edge[m-1].x == Edge[m-1].x) Edge[m-1].y = num;
	else Edge[m-1].y = ++num;
	sort(Edge,Edge+m,cmp1);
	for(int i=0;i<m;i++){
		printf("%06d%06d\n",Edge[i].x,Edge[i].y);
	}
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档