結果

問題 No.3109 Swap members
ユーザー 鈴木康介
提出日時 2025-04-19 09:15:34
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 157 ms / 2,000 ms
コード長 6,359 bytes
コンパイル時間 5,859 ms
コンパイル使用メモリ 307,172 KB
実行使用メモリ 13,824 KB
最終ジャッジ日時 2025-04-19 09:15:48
合計ジャッジ時間 11,707 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 52
権限があれば一括ダウンロードができます

ソースコード

diff #

#if !__INCLUDE_LEVEL__
#include __FILE__

int main(){
    Init();
    ll n,k; cin >> n >> k;
    map<string,ll> mp;
    rep(i,n){
        string s; cin >> s;
        mp[s]=i;
    }
    bool res = true;
    rep(i,n){
        string s; cin >> s;
        if(abs(mp[s]-i)%k){
            res = false;
        }
    }
    cout << (res?"Yes":"No") << el;
}

#else
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector,fast-math")
#include <bits/stdc++.h>
/*
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
*/
#include <atcoder/all>
/*
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/multiprecision/cpp_int.hpp>
*/
using namespace std;
//using namespace __gnu_pbds;
using namespace atcoder;
//namespace mp = boost::multiprecision;
//using bint = mp::cpp_int;
//using Real = mp::number<mp::cpp_dec_float<1024>>;//場合に応じて小さく
struct Init { Init() { ios::sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(13);} }init;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using P = complex<ld>;
using mint = modint;
ll mod=1000000007;
void setmod(ll x){mint::set_mod(x); mod = x;}
template<class T> using pq = std::priority_queue<T>;
template<class T> using pqg = std::priority_queue<T, vector<T>, greater<T>>;
//template <class T> using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define overload4(_1,_2,_3,_4,name,...) name
#define overload3(_1,_2,_3,name,...) name
#define OVERLOAD5(a, b, c, d, e, ...) e
#define REP1_0(b, c) REP1_1(b, c)
#define REP1_1(b, c)                                                           \
    for (ll REP_COUNTER_##c = 0; REP_COUNTER_##c < (ll)(b); ++REP_COUNTER_##c)
#define REP1(b) REP1_0(b, __COUNTER__)
#define REP2(i, b) for (ll i = 0; i < (ll)(b); ++i)
#define REP3(i, a, b) for (ll i = (ll)(a); i < (ll)(b); ++i)
#define REP4(i, a, b, c) for (ll i = (ll)(a); i < (ll)(b); i += (ll)(c))
#define rep(...) OVERLOAD5(__VA_ARGS__, REP4, REP3, REP2, REP1)(__VA_ARGS__)
#define RREP2(i, a) for (ll i = (ll)(a)-1; i >= 0; --i)
#define RREP3(i, a, b) for (ll i = (ll)(b)-1; i >= (ll)(a); --i)
#define RREP4(i, a, b, c) for (ll i = (ll)(b)-1; i >= (ll)(a); i -= (ll)(c))
#define rrep(...) OVERLOAD5(__VA_ARGS__, RREP4, RREP3, RREP2)(__VA_ARGS__)
#define REPS2(i, b) for (ll i = 1; i <= (ll)(b); ++i)
#define REPS3(i, a, b) for (ll i = (ll)(a) + 1; i <= (ll)(b); ++i)
#define REPS4(i, a, b, c) for (ll i = (ll)(a) + 1; i <= (ll)(b); i += (ll)(c))
#define reps(...) OVERLOAD5(__VA_ARGS__, REPS4, REPS3, REPS2)(__VA_ARGS__)
#define RREPS2(i, a) for (ll i = (ll)(a); i > 0; --i)
#define RREPS3(i, a, b) for (ll i = (ll)(b); i > (ll)(a); --i)
#define RREPS4(i, a, b, c) for (ll i = (ll)(b); i > (ll)(a); i -= (ll)(c))
#define rreps(...) OVERLOAD5(__VA_ARGS__, RREPS4, RREPS3, RREPS2)(__VA_ARGS__)
#define fore1(i,a) for(auto&&i:a)
#define fore2(x,y,a) for(auto&&[x,y]:a)
#define fore3(x,y,z,a) for(auto&&[x,y,z]:a)
#define fore(...) overload4(__VA_ARGS__,fore3,fore2,fore1)(__VA_ARGS__)
#define elif else if
#define sz(a) (ll)(a).size() //サイズを返す
#define all1(i) begin(i),end(i)
#define all2(i,a) begin(i),begin(i)+a
#define all3(i,a,b) begin(i)+a,begin(i)+b
#define all(...) overload3(__VA_ARGS__,all3,all2,all1)(__VA_ARGS__)//allのオーバーロード
#define rall1(i) (i).rbegin(),(i).rend()
#define rall2(i,k) (i).rbegin(),(i).rbegin()+k
#define rall3(i,a,b) (i).rbegin()+a,(i).rbegin()+b
#define rall(...) overload3(__VA_ARGS__,rall3,rall2,rall1)(__VA_ARGS__)//rallのオーバーロード
#define el endl //改行
#define spa " " //スペース
#define eps (1e-10) //小さい数
#define equals(a,b) (fabs((a) - (b)) < eps ) //二つの数が同じか(誤差を許容)
#define pb push_back//push_back省略
#define pf push_front//push_front省略
#define mkp make_pair//make_pair省略
#define ft first//first省略
#define sd second//second省略
#define bit(n) (1ull<<(n))//2^n
#define bc(var, lower, upper) ((var)>=lower and (var)<upper)//binary_check[lower,upper)
#define Yes(b) ((b)?"Yes":"No")//Yes:No簡略
#define YES(b) ((b)?"YES":"NO")//YES:NO簡略
const double pi = 3.141592653589793238; //円周率
const ll inf = ((1LL<<62)-(1LL<<31)); //inf
const string ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //ABC大文字
const string abc = "abcdefghijklmnopqrstuvwxyz"; //ABC小文字
const int dx[] = {1, 0, -1, 0}; // → ↓ ← ↑
const int dy[] = {0, 1, 0, -1}; // → ↓ ← ↑
template<class... T> constexpr auto max(T... a){return max(initializer_list<common_type_t<T...>>{a...});}//maxの複数をそのまま
template<typename T> inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); }
template<class... T> constexpr auto min(T... a){return min(initializer_list<common_type_t<T...>>{a...});}//minの複数をそのまま
template<typename T> inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
template <typename T> inline T ceil(T a,T b) {return (a+(b-1))/b;}//天井関数
template <typename T> inline T floor(T a,T b) {return a/b;}//床関数
ll intpow(ll a, ll b){ ll ans = 1; while(b){ if(b & 1) ans *= a; a *= a; b /= 2; } return ans; }//累乗
ll modpow(ll a, ll b, ll p){ ll ans = 1; while(b){ if(b & 1) (ans *= a) %= p; (a *= a) %= p; b /= 2; } return ans; }//modpow
ll floor_sqrt(ll n){if(n==0)return 0;ll m1=sqrt(n)-1;return m1*(m1+2)<n?m1+1:m1;}
vector<pll> factor(ull x){vector<pll>ans;for(ull i=2;i*i<=x;i++)if(x%i==0){ans.push_back({i,1});while((x/=i)%i==0)ans.back().second++;}if(x!=1)ans.push_back({x,1});return ans;}//素因数分解(vector)
map<ll,ll> factor_map(ull x){map<ll,ll>ans;for(ull i=2;i*i<=x;i++)if(x%i==0){ans[i]=1;while((x/=i)%i==0)ans[i]++;}if(x!=1)ans[x]= 1;return ans;}//素因数分解(map)
vector<ll> divisor(ull x){vector<ll>ans;for(ull i=1;i*i<= x;i++)if(x%i==0)ans.push_back(i);ll t=ans.size();rrep(i,t)ans.push_back(x/ans[i]);return ans;}//約数(vector)
ll rsws(vector<ll> &v,ll l,ll r){if(r==l)return 0; ll ret=v[r-1];ret-=(l==0?0:v[l-1]);return ret;}//rsw
ll rrsws(vector<vector<ll>> &v,ll x1,ll y1,ll x2,ll y2){ll ret=v[x2][y2];if(x1)ret-=v[x1-1][y2];if(y1)ret-=v[x2][y1-1];if(x1&&y1)ret+=v[x1-1][y1-1];return ret;}//rrsw
mt19937_64 rng(time(0));//rng() でint_64で乱数を取得template<typename T1, typename T2>
#endif
0