ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SDNU 1185.统计数字(水题)

2019-06-06 16:52:59  阅读:302  来源: 互联网

标签:自然数 水题 int miao 1185 sign ii SDNU include


Description

某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。

Input

输入包含n+1行; 第一行是整数n,表示自然数的个数,1<=n<=200000; 第2~n+1每行一个自然数,每个数均不超过1 500 000 000(1.5*109)。

Output

输出包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。

Sample Input

8
2
4
2
4
5
100
2
100

Sample Output

2 3
4 2
5 1
100 2

Source

NOIP 2007 提高组
#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define ll long long

int n;
ll num[200000+8];

map<ll, int>mp;

struct node
{
    ll sign;
    int time;
}r[200000+8];

bool cmp(node a, node b)
{
    return a.sign<b.sign;
}

int main()
{
    scanf("%d", &n);
    ll x;
    for(int i = 0; i<n; i++)
    {
        scanf("%lld", &x);
        if(!mp[x])mp[x] = 1;
        else mp[x]++;
    }
    map<ll, int>::iterator ii;
    int miao = 0;
    for(ii = mp.begin(); ii != mp.end(); ii++)
    {
        r[miao].sign = ii->first;
        r[miao].time = ii->second;
        miao++;
    }
    sort(r, r+miao, cmp);
    for(int i = 0; i<miao; i++)
        printf("%lld %d\n", r[i].sign, r[i].time);
    return 0;
}

 

标签:自然数,水题,int,miao,1185,sign,ii,SDNU,include
来源: https://www.cnblogs.com/RootVount/p/10985822.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有