雑記・まとめ

個人的な備忘録

abc150_c

問題文通り

 

vector <int> v;

for(int i=0;i<n;i++) v.push_back(i+1);

 

do{

}while(next_mermutation(begin(v), end(v)));

 

上記テンプレを覚えればとりあえずOK

 

#include<bits/stdc++.h>
using namespace std;

int n;
int p[9], q[9];
vector < int > v;

int main(){

    cin >> n;
    for(int i=0;i<n;i++) cin >> p[i];
    for(int i=0;i<n;i++) cin >> q[i];
    for(int i=0;i<n;i++) v.push_back(i+1);

    int pp = 0, qq = 0;
    for(int i=0;i<n;i++){
        pp *= 10; pp += p[i];
        qq *= 10; qq += q[i];
    }

    int a = 0, b = 0, i = 0;
    do{
        int vv = 0;
        for(int j=0;j<n;j++){
            vv *= 10;
            vv += v[j];
        }

        if(pp == vv) a = i;
        if(qq == vv) b = i;
        //cout << vv << endl;
        i++;
    }while(next_permutation(begin(v), end(v)));

//    cout << a << " " << b << " " << pp << " " << qq << endl;
    cout << abs(a-b) << endl;
   
}