[R18B]项链

// [R18B]项链.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
题目地址:
https://bs.daimayuan.top/p/104
题目名称:
[R18B]项链
题目描述:
珠子的颜色有 m 种,分别用 1∼m 表示。
你有一个由 n 个珠子组成的项链,珠子的编号为 1∼n,编号 i 的珠子颜色为 a_i。
你决定取下项链中每种颜色的珠子各一个,同种颜色的珠子有多个时取下其中编号最小的那个。
请按从小到大的顺序输出你要取下的珠子的编号。
输入格式:
第一行包含两个整数 n, m,分别表示珠子的数量和颜色的数量。
第二行包含 n 个整数 a_i,分别表示每个珠子的颜色。
输出格式:
按从小到大的顺序输出你要取下的珠子的编号。
数据范围:
对于 60% 的数据,n≤1000。
对于 100% 的数据,1≤n,m≤3×10^5,1≤a_i≤m。
样例输入:
7 10
1 1 2 7 1 2 9
样例输出:
1 3 4 7
*/


#include <iostream>
#include <algorithm>
#include <vector>


using namespace std;
const int N = 300010;
vector<int> v[N];
int n, m;
int main()
{
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        v[x].push_back(i);
	}
    vector<int> ans;
    for(int i= 1; i <= m; i++)
    {
        if (v[i].size() > 0)  ans.push_back(v[i][0]);
	}
    sort(ans.begin(), ans.end());
    for(int i= 0; i < ans.size(); i++)
    {
        cout << ans[i] << " ";
	}

    return 0;
}
 

posted on 2025-07-14 15:19  itdef  阅读(15)  评论(0)    收藏  举报

导航