金魚亭日常

読書,ガジェット,競技プログラミング

ABC113 C - ID

いつの間にかできていた #chokudai今日の一問

記念すべき1問目は,多分これ.

ABC113 C - ID

C - ID

素直に実装する.

前回解いたときは,sprintf() とかその辺でハマった気がするけど,今回はvector 2個作って printf() すればいいということに途中で気づいた.

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <sstream>
#include <string>

using namespace std;

static int N, M;
typedef pair<long long, int> City;
static vector<vector<City>> P;

void solve() {
  vector<int> id1(M + 1);
  vector<int> id2(M + 1);
  for (int i = 1; i < N + 1; i++) {
    sort(P[i].begin(), P[i].end());
    for (int j = 1; j < P[i].size(); j++) {
      id1[P[i][j].second] = i;
      id2[P[i][j].second] = j;
    }
  }
  for (int i = 1; i < M + 1; i++) {
    printf("%06d%06d\n", id1[i], id2[i]);
  }
}

int main() {
  cin >> N >> M;
  P.resize(N + 1);
  for (int i = 0; i < N + 1; i++) {
    vector<City> v(1);
    P[i] = v;
  }
  for (int i = 0; i < M; i++) {
    int p;
    long long y;
    cin >> p >> y;
    P[p].push_back(City(y, i + 1));
  }
  solve();
  return 0;
}

https://atcoder.jp/contests/abc113/submissions/7090478