A.小y的序列------牛客练习赛44

链接:https://ac.nowcoder.com/acm/contest/634/A
来源:牛客网
 

题目描述

小y有一块长度为n的布匹。颜色全部为0。他要给这个布匹染色。他总共有m种染料。小y认为一种染料用多次是不和谐的。所以每种染料会被用刚好一次。也就是说小y要给这块布匹染m次色。第i次会把LiLi到RiRi这个区间染成颜色i。现在给出最终布匹每段的颜色。请你输出一种染色方案。数据保证有解

输入描述:

输入共两行。
第一行两个个正整数n,m,表示布匹的长度和染料的数量
第二行n个用空格隔开的正整数,第i个数字aiai表示第i个布匹的颜色。

输出描述:

输出m行。
第i行包含两个正整数Li,RiLi,Ri,表示第i次染色的区间。

示例1

输入

复制

3 3
1 2 3

输出

复制

1 3
2 3
3 3

备注:

1≤n,m≤1051≤n,m≤105

0≤ai≤m0≤ai≤m

1≤Li≤Ri≤n1≤Li≤Ri≤n

代码:

#include<set>
#include<map>
#include<cmath>
#include<vector>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int a[100005],l[100005],r[100005];
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(l[a[i]]==0)
         l[a[i]]=i;
        r[a[i]]=i;
    }
    for(int i=1;i<=m;i++)
    {
        if(r[i]!=0)
            printf("%d %d\n",l[i],r[i]);
        else
            printf("%d %d\n",l[m],r[m]);
    }
    return 0;
}

 

猜你喜欢

转载自blog.csdn.net/shinian_acmer/article/details/89413021