結果
問題 | No.482 あなたの名は |
ユーザー | onkohdondo |
提出日時 | 2017-02-10 22:29:36 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 7,631 bytes |
コンパイル時間 | 1,188 ms |
コンパイル使用メモリ | 162,944 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-09 10:50:13 |
合計ジャッジ時間 | 2,538 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 2 ms
6,940 KB |
testcase_02 | AC | 1 ms
6,944 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,940 KB |
testcase_05 | AC | 1 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,944 KB |
testcase_07 | AC | 2 ms
6,948 KB |
testcase_08 | AC | 1 ms
6,940 KB |
testcase_09 | AC | 1 ms
6,940 KB |
testcase_10 | AC | 1 ms
6,940 KB |
testcase_11 | AC | 1 ms
6,944 KB |
testcase_12 | AC | 2 ms
6,944 KB |
testcase_13 | AC | 2 ms
6,944 KB |
testcase_14 | AC | 1 ms
6,940 KB |
testcase_15 | AC | 23 ms
6,940 KB |
testcase_16 | AC | 23 ms
6,940 KB |
testcase_17 | AC | 23 ms
6,940 KB |
testcase_18 | AC | 23 ms
6,940 KB |
testcase_19 | AC | 24 ms
6,944 KB |
testcase_20 | AC | 24 ms
6,944 KB |
testcase_21 | AC | 24 ms
6,944 KB |
testcase_22 | AC | 23 ms
6,940 KB |
testcase_23 | AC | 24 ms
6,940 KB |
testcase_24 | AC | 23 ms
6,944 KB |
testcase_25 | AC | 24 ms
6,944 KB |
testcase_26 | AC | 23 ms
6,940 KB |
testcase_27 | AC | 24 ms
6,940 KB |
testcase_28 | AC | 23 ms
6,944 KB |
testcase_29 | AC | 22 ms
6,944 KB |
testcase_30 | AC | 1 ms
6,944 KB |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:46:27: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 46 | #define SCANF_INT(a) scanf("%d", &(a)); | ~~~~~^~~~~~~~~~~~ main.cpp:8:9: note: in expansion of macro ‘SCANF_INT’ 8 | MACRO(A0, ##__VA_ARGS__) | ^~~~~ main.cpp:5:69: note: in expansion of macro ‘EXPAND_01’ 5 | #define GET_MACRO_09(A0, A1, A2, A3, A4, A5, A6, A7, A8, NAME, ...) NAME | ^~~~ main.cpp:40:28: note: in expansion of macro ‘EXPAND_ARG_0’ 40 | #define EXPAND(MACRO, ...) EXPAND_ARG_0(MACRO, __VA_ARGS__) | ^~~~~~~~~~~~ main.cpp:48:18: note: in expansion of macro ‘EXPAND’ 48 | #define IR(...) {EXPAND(SCANF_INT, __VA_ARGS__)} | ^~~~~~ main.cpp:49:32: note: in expansion of macro ‘IR’ 49 | #define I(...) ID(__VA_ARGS__) IR(__VA_ARGS__) | ^~ main.cpp:277:9: note: in expansion of macro ‘I’ 277 | I(n); L(k); | ^ main.cpp:56:26: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 56 | #define SCANF_LL(a) scanf("%lld", &(a)); | ~~~~~^~~~~~~~~~~~~~ main.cpp:8:9: note: in expansion of macro ‘SCANF_LL’ 8 | MACRO(A0, ##__VA_ARGS__) | ^~~~~ main.cpp:5:69: note: in expansion of macro ‘EXPAND_01’ 5 | #define GET_MACRO_09(A0, A1, A2, A3, A4, A5, A6, A7, A8, NAME, ...) NAME | ^~~~ main.cpp:40:28: note: in expansion of macro ‘EXPAND_ARG_0’ 40 | #define EXPAND(MACRO, ...) EXPAND_ARG_0(MACRO, __VA_ARGS__) | ^~~~~~~~~~~~ main.cpp:58:18: note: in expans
ソースコード
#include <bits/stdc++.h> using namespace std; // Macro Tools ///////////////////////////////////////////////////////////////// #define GET_MACRO_09(A0, A1, A2, A3, A4, A5, A6, A7, A8, NAME, ...) NAME #define EXPAND_01(MACRO, A0, ...) \ MACRO(A0, ##__VA_ARGS__) #define EXPAND_02(MACRO, A0, A1, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) #define EXPAND_03(MACRO, A0, A1, A2, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) #define EXPAND_04(MACRO, A0, A1, A2, A3, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) #define EXPAND_05(MACRO, A0, A1, A2, A3, A4, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) MACRO(A4, ##__VA_ARGS__) #define EXPAND_06(MACRO, A0, A1, A2, A3, A4, A5, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) MACRO(A4, ##__VA_ARGS__) MACRO(A5, ##__VA_ARGS__) #define EXPAND_07(MACRO, A0, A1, A2, A3, A4, A5, A6, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) MACRO(A4, ##__VA_ARGS__) MACRO(A5, ##__VA_ARGS__) \ MACRO(A6, ##__VA_ARGS__) #define EXPAND_08(MACRO, A0, A1, A2, A3, A4, A5, A6, A7, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) MACRO(A4, ##__VA_ARGS__) MACRO(A5, ##__VA_ARGS__) \ MACRO(A6, ##__VA_ARGS__) MACRO(A7, ##__VA_ARGS__) #define EXPAND_09(MACRO, A0, A1, A2, A3, A4, A5, A6, A7, A8, ...) \ MACRO(A0, ##__VA_ARGS__) MACRO(A1, ##__VA_ARGS__) MACRO(A2, ##__VA_ARGS__) \ MACRO(A3, ##__VA_ARGS__) MACRO(A4, ##__VA_ARGS__) MACRO(A5, ##__VA_ARGS__) \ MACRO(A6, ##__VA_ARGS__) MACRO(A7, ##__VA_ARGS__) MACRO(A8, ##__VA_ARGS__) #define GET_EXPAND(...) GET_MACRO_09(__VA_ARGS__, EXPAND_09, EXPAND_08, \ EXPAND_07, EXPAND_06, EXPAND_05, EXPAND_04, EXPAND_03, EXPAND_02, EXPAND_01) #define EXPAND_ARG_0(MACRO, ...) GET_EXPAND(__VA_ARGS__)(MACRO, __VA_ARGS__) #define EXPAND_ARG_1(MACRO, A0, ...) GET_EXPAND(__VA_ARGS__)(MACRO, __VA_ARGS__, A0) #define EXPAND(MACRO, ...) EXPAND_ARG_0(MACRO, __VA_ARGS__) #define Q(x) #x #define QUOTE(x) Q(x) // Input /////////////////////////////////////////////////////////////////////// #define SCANF_INT(a) scanf("%d", &(a)); #define ID(...) int __VA_ARGS__; #define IR(...) {EXPAND(SCANF_INT, __VA_ARGS__)} #define I(...) ID(__VA_ARGS__) IR(__VA_ARGS__) // #define DEFINE_INT_ARRAY(a, n) int a[n]; // #define INT_ITH_ARRAY(a, i) a[i] // #define IAD(N, ...) EXPAND_ARG_1(DEFINE_INT_ARRAY, N, __VA_ARGS__) // #define IAR(N, ...) REP(array_reader_i, N){ #define SCANF_LL(a) scanf("%lld", &(a)); #define LD(...) ll __VA_ARGS__; #define LR(...) {EXPAND(SCANF_LL, __VA_ARGS__)} #define L(...) LD(__VA_ARGS__) LR(__VA_ARGS__) #define SCANF_LD(a) scanf("%Lf", &(a)); #define DD(...) lD __VA_ARGS__; #define DR(...) {EXPAND(SCANF_LD, __VA_ARGS__)} #define D(...) DD(__VA_ARGS__) DR(__VA_ARGS__) #define DEFINE_STR(a, n) char a[n]; #define SCANF_STR(a) scanf("%s", a); #define SD(N, ...) EXPAND_ARG_1(DEFINE_STR, N, __VA_ARGS__) #define SR(...) EXPAND(SCANF_STR, __VA_ARGS__) #define S(N, ...) SD(N, __VA_ARGS__) SR(__VA_ARGS__) // Output ////////////////////////////////////////////////////////////////////// #define LN printf("\n"); #define IP(a, ...) printf("%d", a); // Types /////////////////////////////////////////////////////////////////////// typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<int, ll> pil; typedef pair<ll, int> pli; typedef pair<ll, ll> pll; typedef set<int> si; typedef set<ll> sll; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<pii> vpii; typedef list<int> li; typedef list<ll> lll; typedef map<int, int> mii; typedef map<int, ll> mil; typedef map<ll, int> mli; typedef map<ll, ll> mll; // Loop & Iteration //////////////////////////////////////////////////////////// #define FORT(t, i, a, b) \ for(t i = (a), loop_end_##i=(b); i < (loop_end_##i); i++) #define FORL(i, a, b) FORT(ll, i, a, b) #define FOR(i, a, b) FORT(int, i, a, b) #define REPT(t, i, n) FORT(t, i, 0, n) #define REPL(i, n) FORL(i, 0, n) #define REP(i, n) FOR(i, 0, n) #define EACH(i,c) for(auto i=(c).begin(); i!=(c).end(); ++i) #define EXIST(s,e) ((s).find(e)!=(s).end()) #define ALL(a) (a).begin(), (a).end() #define SORT(a) sort(ALL(a)) #define SORTA(a, n) sort(a, a+n) #define PB push_back #define MP make_pair #define itr iterator // Range /////////////////////////////////////////////////////////////////////// #define IN(x, a, b) (a<=x && x<b) #define INC(x, a, b) (a<=x && x<=b) int dx[8] = { 1, 0, 0,-1, 1, 1,-1,-1}; int dy[8] = { 0,-1, 1, 0,-1, 1,-1, 1}; #define LAR(a, b) ((a)=max((a), (b))) #define SML(a, b) ((a)=min((a), (b))) // Debug /////////////////////////////////////////////////////////////////////// #define println(...) {printf(__VA_ARGS__); printf("\n");} #ifdef LOCAL #define debug(...) printf(__VA_ARGS__) #define debugln(...) println(__VA_ARGS__) #else #define debug(...) {} #define debugln(...) {} #endif // Numbers ///////////////////////////////////////////////////////////////////// ll gcd(ll a, ll b){ if(b==0) return a; else return gcd(b, a%b); } #define PRIME_MAX 1000000 bool isprime[PRIME_MAX+5]; void init_prime(){ fill(isprime, isprime+PRIME_MAX+5, true); isprime[0]=isprime[1]=false; REP(i, PRIME_MAX+5){ if(isprime[i]){ for(int j=i*2; j<PRIME_MAX; j+=i){ isprime[j]=false; } } } } vll factors(ll n){ vll v; REPL(i, PRIME_MAX){ if(!isprime[i]) continue; while(n%i==0){ v.PB(i); n/=i; } } if(n>1){ v.PB(n); } return v; } // BIT ///////////////////////////////////////////////////////////////////////// template< typename T = int > class bit{ public: T *bit_arr; int size; bit(int n){ size = n; bit_arr = new T[n]; fill(bit_arr, bit_arr+n, 0); } ~bit(){ delete bit_arr; } T sum(int a){ T ret = 0; while(a){ ret+=bit_arr[a]; a-=a&-a; } return ret; } T sum(int a, int b){ return sum(b)-sum(a); } T get(int a){ return sum(a, a+1); } void add(int a, T x){ a++; while(a<size){ bit_arr[a]+=x; a+=a&-a; } } void set(int a, T x){ add(a, x-get(a)); } }; typedef bit<ll> bll; // RMQ ///////////////////////////////////////////////////////////////////////// template< typename T = int, class Compare=less<T> > class rmq{ public: int size; Compare comp; T *dat; T init; rmq(int n, T init_=INT_MAX){ init=init_; size = 1; while(size<n) size*=2; dat = new T[2*size-1]; fill(dat, dat+(2*size-1), init); } ~rmq(){ delete dat; } void set(int k, T a){ k+=size-1; dat[k]=a; while(k>0){ k=(k-1)/2; dat[k]=min(dat[k*2+1], dat[k*2+2], comp); } } T get(int a, int b, int k, int l, int r){ if(r<=a || b<=l) return init; if(a<=l && r<=b) return dat[k]; else{ T vl = get(a, b, k*2+1, l, (l+r)/2); T vr = get(a, b, k*2+2, (l+r)/2, r); return min(vl, vr, comp); } } T get(int a, int b){ return get(a, b, 0, 0, size); } }; // Others ////////////////////////////////////////////////////////////////////// #define MOD 1000000007 #define YES() printf("YES\n") #define NO() printf("NO\n") //////////////////////////////////////////////////////////////////////////////// #define N 212345 int a[N], b[N]; int main(){ I(n); L(k); REP(i, n){ I(p); p--; a[i]=p; b[p]=i; } REP(i, n){ if(a[i]==i) continue; int c=b[i]; swap(b[i], b[a[i]]); swap(a[i], a[c]); k--; } if(k<0) NO(); else if(k%2) NO(); else YES(); }