Submission #274884

#TimeUsernameProblemLanguageResultExecution timeMemory
274884index_Lock Puzzle (innopolis2018_final_A)C++14
89 / 100
74 ms760 KiB
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <cmath>
#include <unordered_set>
#include <unordered_map>
#include <iomanip>
#include <deque>
#include <chrono>
#include <cassert>
#include <bitset>
#include <random>

using namespace std;

typedef long long li;
typedef  long double ld;
const li MAX = 3e5 + 5;

li inf = (li)3000000000;
li mod = (li)998244353;

li n, m;
string s, t;

void swp(li len) {
    string a, b;
    a = s;
    for (int i = 0; i < len; i++) {
        b.push_back(a.back());
        a.pop_back();
    }
    s = b + a;
}

void pos() {
    string a, b;
    a = s;
    b = t;
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    if (a != b) {
        cout << -1;
        exit(0);
    }

}

void solve() {

    cin >> n >> m;
    cin >> s >> t;
    pos();
    vector<li> ans;
    for (int i = 0; i < n; i++) {
        li ind;
        for (int j = i; j < n; j++) {
            if (s[j] == t[i]) {
                ind = j;
                break;
            }
        }
        swp(n);
        swp(ind);
        swp(1);
        ans.push_back(n);
        ans.push_back(ind);
        ans.push_back(1);
    }
    swp(n);
    ans.push_back(n);
    cout << ans.size() << "\n";
    for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";

}


int main() {
    mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
    ios::sync_with_stdio(0);
    li q;
    q = 1;
    while (q--) solve();

    return 0;
}

Compilation message (stderr)

A.cpp: In function 'void solve()':
A.cpp:78:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |     for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
      |                     ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...