Language: C++

#include <iostream>
#include <stdio.h>
#include <stdlib.h> //rand() 0~RAND_MAX2147483647
#include <math.h>
#include <time.h>   //srand((unsigned int)time(NULL));
#include <unistd.h> //sleep
#include <algorithm>
#include <cmath>
#include <vector>
#include <regex> //正規表現
#include <map>
#include <unordered_map>
#include <set>
#include <cassert> //assart
#include <numeric>
#include <iterator>
#include <list>
#include <tuple>

using namespace std;
#define ll long long int
#define FOR(i,min,max) for(int i=(min);i<(max);i++)
#define FOReq(i,min,max) for(int i=(min);i<=(max);i++)
#define FORREV(i,max,min) for(int i=(max)-1;i>=(min);i--)
#define FORREVeq(i,max,min) for(int i=(max);i>=(min);i--)
const int MOD=1e9+7;
const int MOD2=998244353;
const int not0=1;
const int INF=2000000001;
const ll INFll=2e18;
//const int MAX_V=10000;
const double  Micro=1e-5;

int UnUsedVariable(){
    if(INF || Micro || MOD || INFll || MOD2 || not0){;}
    return 0;
}

#define pf printf
#define sf scanf
#define inarray(array,min,max) FOR(i,min,max){cin>>array[i];}
#define inarrayW(arrayA,arrayB,min,max) FOR(i,min,max){cin>>arrayA[i]>>arrayB[i];}
#define br printf("\n");
#define OutputAndReturn0(x) {cout<<(x)<<endl;return 0;}
#define elif else if

#define issame(a,b,c,d) ((a)==(b) and (b)==(c) and (c)==(d))
#define isdiff3(a,b,c) ((a)!=(b) and (b)!=(c) and (c)!=(a))
#define isdiff4(a,b,c,d) ((a)!=(b) and (b)!=(c) and (c)!=(a) and (d)!=(a) and (d)!=(b) and (d)!=(c))
#define isdiff5(a,b,c,d,e) ((a)!=(b) and (b)!=(c) and (c)!=(a) and (d)!=(a) and (d)!=(b) and (d)!=(c) and (e)!=(a) and (e)!=(b) and (e)!=(c) and (e)!=(d))
#define Func3(f,a,b,c) (f)((f)((a),(b)),(c))
#define Func4(f,a,b,c,d) (f)((f)((f)((a),(b)),(c)),(d))

inline int isEven(int x){return x%2==0;}
inline int isOdd (int x){return x%2==1;}
inline ll  gcd(ll a,ll b){ if(b==0)return a;else return gcd(b,a%b);}//最大公約数 なお一方が0なら答えは他方になるので番兵は０で良い また、負の数もOK -4%3=-1となるため
inline ll  lcm(ll a,ll b){return a*b/gcd(a,b);}//MODやオーバーフローには注意！
//inline ll  ceil(double a){return (ll)a+1;}
//ans = accumulate(A, A+N, 0, [](int a, int b) {return gcd(a,b);});
//auto count = std::count_if(v.begin(), v.end(), [](int x) { return x == 1 || x == 3; } );




//Eと名のつくのはデバッグ用！
int EintN(ll array[],const ll num){
    for(int i=0;i<num;i++){cerr<<array[i]<<" ";}
    br;
    return 0;
}
int EintNN(const int heighth,const int width,int array[heighth][width]){
    FOR(i, 0, heighth){
        FOR(k, 0, width){
            {cerr<<array[i][k]<<" ";}
        }
        br;
    }
    br;
    return 0;
}
int Eint(string str,const ll num){
    cerr<<str<<" is "<<num<<" now."<<endl;
    return 0;
}











struct fenwick_tree {//区間の和の計算, 要素の値の更新がそれぞれ O(log n)でできるデータ構造.
    typedef ll T;
    T n;
    vector<T> bit;
    
    // 各要素の初期値は 0
    fenwick_tree(T num2) : bit(num2+1, 0) { n = num2; }
    
    // a_i += w
    void add(T i, T w) {
        for (T x = i; x <= n; x += x & -x) {
            bit[x] += w;
        }
    }
    // [1, i] の和を計算.
    T sum(T i) {
        T ret = 0;
        for (T x = i; x > 0; x -= x & -x) {
            ret += bit[x];
        }
        return ret;
    }
    // [left+1, right] の和を計算.
    T sum(T left, T right) {
        return sum(right) - sum(left);
    }
};

//転倒数。本当は転倒数はinversion numberなのだが…

ll RolledNumber(ll array[],ll num){
    //O(NlogN) 素直にバブルソートで実装するとO(N^2)
    ll ans=0;
    fenwick_tree f_tree(num);
    
    for (int j = 0; j < num; j++) {
        ans += j - f_tree.sum(array[j]);
        f_tree.add(array[j], 1);
    }
    return ans;
}


ll prob(){
    ll ans;ans=0;
    ll Pnum,citynum;cin>>Pnum>>citynum;
    tuple<int,int,int,string> data[citynum];
    
    FOR(i, 0, citynum){
        cin>>get<0>(data[i])>>get<1>(data[i]);
        get<2>(data[i])=i;
    }
    sort(data, data+citynum);
    
    int beforecity=-1;
    int samecity=0;
    FOR(i, 0, citynum){
        char temp[15];
        if(beforecity==get<0>(data[i])){samecity++;}else samecity=0;
        sprintf(temp,"%06d%06d",get<0>(data[i]),samecity+1);
        get<3>(data[i])=temp;
        beforecity=get<0>(data[i]);
    }
    
    sort(data, data+citynum,[](tuple<int,int,int,string> a,tuple<int,int,int,string> b) { return get<2>(a)<get<2>(b); });
    
    FOR(i, 0, citynum){
        cerr<<i<<" "<<get<0>(data[i])<<" "<<get<1>(data[i])<<" "<<get<2>(data[i])<<" "<<get<3>(data[i])<<endl;
    }
    
    FOR(i, 0, citynum){
        cout<<get<3>(data[i])<<endl;
    }
    
    //OutputAndReturn0("Yes");
    return 0;
}

signed main(){
    prob();
    return 0;
}


Compiler output:
a.cc:71:63: error: use of parameter outside function body before ']' token
   71 | int EintNN(const int heighth,const int width,int array[heighth][width]){
      |                                                               ^
a.cc:71:70: error: use of parameter outside function body before ']' token
   71 | int EintNN(const int heighth,const int width,int array[heighth][width]){
      |                                                                      ^
a.cc: In function 'int EintNN(...)':
a.cc:72:15: error: 'heighth' was not declared in this scope
   72 |     FOR(i, 0, heighth){
      |               ^~~~~~~
a.cc:22:43: note: in definition of macro 'FOR'
   22 | #define FOR(i,min,max) for(int i=(min);i<(max);i++)
      |                                           ^~~
a.cc:73:19: error: 'width' was not declared in this scope; did you mean 'wcwidth'?
   73 |         FOR(k, 0, width){
      |                   ^~~~~
a.cc:22:43: note: in definition of macro 'FOR'
   22 | #define FOR(i,min,max) for(int i=(min);i<(max);i++)
      |                                           ^~~
a.cc:74:25: error: missing template arguments before '[' token
   74 |             {cerr<<array[i][k]<<" ";}
      |                         ^