結果

問題 No.585 工夫のないパズル
ユーザー nmnmnmnmnmnmnm
提出日時 2017-09-11 00:28:03
言語 C++11
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 2,662 bytes
コンパイル時間 965 ms
コンパイル使用メモリ 97,920 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-11-22 02:44:02
合計ジャッジ時間 3,638 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 3
other WA * 12
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘void move(std::string&, char, ll, ll)’:
main.cpp:87:7: warning: ‘c3’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   87 |   rotR(s,N-1,c3-c2);
      |   ~~~~^~~~~~~~~~~~~
main.cpp:88:7: warning: ‘c2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   88 |   rotC(s,c2,r2-(N-1));
      |   ~~~~^~~~~~~~~~~~~~~
main.cpp:88:7: warning: ‘r2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
main.cpp: In function ‘void toLeft(std::string&, char)’:
main.cpp:110:7: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  110 |   rotC(s,c,1);
      |   ~~~~^~~~~~~
main.cpp:109:7: warning: ‘r’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  109 |   rotR(s,r,-2);
      |   ~~~~^~~~~~~~
main.cpp: In function ‘int main()’:
main.cpp:135:7: warning: ‘c’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  135 |   rotR(s,N-1,-c);
      |   ~~~~^~~~~~~~~~

ソースコード

diff #
プレゼンテーションモードにする

#include <algorithm>
#include <cfloat>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <functional>
#include <iostream>
#include <map>
#include <memory>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
#define sz size()
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) (c).begin(), (c).end()
#define rep(i,a,b) for(ll i=(a);i<(b);++i)
#define per(i,a,b) for(ll i=b-1LL;i>=(a);--i)
#define clr(a, b) memset((a), (b) ,sizeof(a))
#define ctos(c) string(1,c)
#define print(x) cout<<#x<<" = "<<x<<endl;
#define MOD 1000000007
#define N 4
string A = "ABCDEFGHIJKLMNOP";
vector<pair<string,pair<ll,ll> > > ans;
// raRotate (-N<=a<=N)
void rotR(string &s, ll r, ll a){
a *= -1;
a += N;
a %= N;
if(a!=0)ans.pb(mp("R",mp(r,a)));
rep(i,0,a){
rep(j,0,N-1){
swap(s[r*N+j],s[r*N+j+1]);
}
}
}
// caRotate (-N<=a<=N)
void rotC(string &s, ll c, ll a){
a *= -1;
a += N;
a %= N;
if(a!=0)ans.pb(mp("C",mp(c,a)));
rep(i,0,a){
rep(j,0,N-1){
swap(s[j*N+c],s[(j+1)*N+c]);
}
}
}
//
void move(string &s, char ch, ll r1, ll c1){
ll r2,c2;
rep(i,0,N*N){
if(s[i]==ch){
r2 = i/N;
c2 = i%N;
}
}
ll c3;
rep(i,0,N){
if(i!=c1&&i!=c2){
c3 = i;
break;
}
}
rotC(s,c2,(N-1)-r2);
rotR(s,N-1,c3-c2);
rotC(s,c2,r2-(N-1));
rotC(s,c1,(N-1)-r1);
rotR(s,N-1,c1-c3);
rotC(s,c1,r1-(N-1));
}
// () N=4
void toLeft(string &s, char ch){
ll r,c;
rep(i,0,N*N){
if(s[i]==ch){
r = i/N;
c = i%N;
}
}
rotR(s,r,-1);
rotC(s,c,-1);
rotR(s,r,-1);
rotC(s,c,1);
rotR(s,r,-1);
rotC(s,c,-1);
rotR(s,r,-2);
rotC(s,c,1);
}
int main() {
string s;
rep(i,0,4){
string s1;
cin>>s1;
s += s1;
}
string s2 = s;
sort(all(s2));
if(s2!=A){
cout << -1 << endl;
return 0;
}
rep(i,0,N*(N-1)){
move(s,A[i],i/N,i%N);
}
ll c;
rep(i,0,N*N){
if(s[i]==A[N*(N-1)]){
c = i%N;
}
}
rotR(s,N-1,-c);
rep(i,1,N){
char ch = A[N*(N-1)+i];
per(j,i+1,N){
if(s[N*(N-1)+j]==ch){
toLeft(s,ch);
}
}
}
cout << ans.sz << endl;
rep(i,0,ans.sz){
cout << ans[i].fi << " " << ans[i].se.fi << " " << ans[i].se.se << endl;
}
return 0;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0