提出 #577608
ソースコード 拡げる
#include<vector>
#include<iostream>
#include<map>
#include<numeric>
#include<algorithm>
#include<set>
#include<queue>
#include<cassert>
#include<cstring>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define REP(i, n) for(int i=0;i<(int)n;i++)
#define REPS(i, n) for(int i=1;i<=(int)n;i++)
#define RREP(i, n) for(int i=n-1;i>=0;i--)
#define RREPS(i, n) for(int i=n;i>0;i--)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
#define pb push_back
#define eb emplace_back
#define mp make_pair
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
template<class T>
ostream &operator<<(ostream &os, const vector<T> &v){
os << "[";
REP(i, v.size()){
if(i) os << ",";
os << v[i];
}
return os << "]";
}
const int INF = 1<<29;
int T, n, m;
string s;
vi mul(const vi &a, const vi &b){
vi res(a.size());
REP(i, a.size()) res[i] = b[a[i]];
return res;
}
vi pow(vi a, ll k){
vi res(n*n);
iota(ALL(res), 0);
while(k){
if(k&1) res = mul(res, a);
a = mul(a, a);
k /= 2;
}
return res;
}
ll num(int &i){
ll res = 0;
while(i < s.size() && isdigit(s[i])){
res = res * 10 + s[i ++] - '0';
}
return res;
}
vi ope(int &i){
char c = s[i++];
int k = num(i) - 1;
vi res(n*n);
iota(ALL(res), 0);
REP(i, n){
if(c == 'D') res[i*n+k] = (i+1)%n*n+k;
else if(c == 'U') res[i*n+k] = (i+n-1)%n*n+k;
else if(c == 'R') res[k*n+i] = k*n+(i+1)%n;
else if(c == 'L') res[k*n+i] = k*n+(i+n-1)%n;
else assert(false);
}
return res;
}
vi seq(int &i){
vi res(n*n);
iota(ALL(res), 0);
if(i == s.size()) return res;
while(i < s.size() && s[i] != ')'){
vi ret;
if(s[i] == '('){
ret = seq(++i);
assert(s[i++] == ')');
ll k = num(i);
ret = pow(ret, k);
}else if(isupper(s[i])){
ret = ope(i);
}else assert(false);
res = mul(res, ret);
}
return res;
}
int main(){
while(cin >> n >> m >> s){
int i = 0;
vi res = seq(i);
vi ans(n*n);
REP(i, n*n) ans[res[i]] = i + 1;
REP(i, n)REP(j, n){
cout << ans[i*n+j] << " \n"[j+1 == n];
}
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Shifting a Matrix |
| ユーザ | zerokugimachine |
| 言語 | C++11 (GCC 4.8.1) |
| 得点 | 100 |
| コード長 | 2185 Byte |
| 結果 | AC |
| 実行時間 | 105 ms |
| メモリ | 13980 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 00_sample_00, 00_sample_01, 00_sample_02, 10_basic_rnd_small_000, 10_basic_rnd_small_001, 10_basic_rnd_small_002, 10_basic_rnd_small_003, 10_basic_rnd_small_004, 11_basic_rnd_med_000, 11_basic_rnd_med_001, 11_basic_rnd_med_002, 11_basic_rnd_med_003, 11_basic_rnd_med_004, 12_basic_rnd_med_000, 12_basic_rnd_med_001, 12_basic_rnd_med_002, 12_basic_rnd_med_003, 12_basic_rnd_med_004, 13_basic_rnd_large_000, 13_basic_rnd_large_001, 13_basic_rnd_large_002, 13_basic_rnd_large_003, 13_basic_rnd_large_004, 13_basic_rnd_large_005, 13_basic_rnd_large_006, 13_basic_rnd_large_007, 13_basic_rnd_large_008, 13_basic_rnd_large_009, 23_many_loop_rnd_large_000, 23_many_loop_rnd_large_001, 23_many_loop_rnd_large_002, 23_many_loop_rnd_large_003, 23_many_loop_rnd_large_004, 23_many_loop_rnd_large_005, 23_many_loop_rnd_large_006, 23_many_loop_rnd_large_007, 23_many_loop_rnd_large_008, 23_many_loop_rnd_large_009, 33_low_loop_large_000, 33_low_loop_large_001, 33_low_loop_large_002, 33_low_loop_large_003, 33_low_loop_large_004, 33_low_loop_large_005, 33_low_loop_large_006, 33_low_loop_large_007, 33_low_loop_large_008, 33_low_loop_large_009, 90_challenge_00 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_00 | AC | 26 ms | 728 KiB |
| 00_sample_01 | AC | 25 ms | 920 KiB |
| 00_sample_02 | AC | 26 ms | 732 KiB |
| 10_basic_rnd_small_000 | AC | 24 ms | 920 KiB |
| 10_basic_rnd_small_001 | AC | 25 ms | 916 KiB |
| 10_basic_rnd_small_002 | AC | 23 ms | 800 KiB |
| 10_basic_rnd_small_003 | AC | 25 ms | 920 KiB |
| 10_basic_rnd_small_004 | AC | 25 ms | 924 KiB |
| 11_basic_rnd_med_000 | AC | 25 ms | 920 KiB |
| 11_basic_rnd_med_001 | AC | 25 ms | 692 KiB |
| 11_basic_rnd_med_002 | AC | 23 ms | 920 KiB |
| 11_basic_rnd_med_003 | AC | 26 ms | 796 KiB |
| 11_basic_rnd_med_004 | AC | 23 ms | 672 KiB |
| 12_basic_rnd_med_000 | AC | 24 ms | 676 KiB |
| 12_basic_rnd_med_001 | AC | 22 ms | 928 KiB |
| 12_basic_rnd_med_002 | AC | 23 ms | 800 KiB |
| 12_basic_rnd_med_003 | AC | 24 ms | 928 KiB |
| 12_basic_rnd_med_004 | AC | 22 ms | 800 KiB |
| 13_basic_rnd_large_000 | AC | 39 ms | 1184 KiB |
| 13_basic_rnd_large_001 | AC | 36 ms | 1188 KiB |
| 13_basic_rnd_large_002 | AC | 39 ms | 1192 KiB |
| 13_basic_rnd_large_003 | AC | 61 ms | 1792 KiB |
| 13_basic_rnd_large_004 | AC | 68 ms | 1880 KiB |
| 13_basic_rnd_large_005 | AC | 72 ms | 2104 KiB |
| 13_basic_rnd_large_006 | AC | 50 ms | 1444 KiB |
| 13_basic_rnd_large_007 | AC | 42 ms | 1196 KiB |
| 13_basic_rnd_large_008 | AC | 39 ms | 1184 KiB |
| 13_basic_rnd_large_009 | AC | 54 ms | 1636 KiB |
| 23_many_loop_rnd_large_000 | AC | 52 ms | 1832 KiB |
| 23_many_loop_rnd_large_001 | AC | 70 ms | 2340 KiB |
| 23_many_loop_rnd_large_002 | AC | 73 ms | 2856 KiB |
| 23_many_loop_rnd_large_003 | AC | 95 ms | 3684 KiB |
| 23_many_loop_rnd_large_004 | AC | 47 ms | 1568 KiB |
| 23_many_loop_rnd_large_005 | AC | 49 ms | 1824 KiB |
| 23_many_loop_rnd_large_006 | AC | 54 ms | 2080 KiB |
| 23_many_loop_rnd_large_007 | AC | 100 ms | 3168 KiB |
| 23_many_loop_rnd_large_008 | AC | 88 ms | 3236 KiB |
| 23_many_loop_rnd_large_009 | AC | 95 ms | 3616 KiB |
| 33_low_loop_large_000 | AC | 48 ms | 1248 KiB |
| 33_low_loop_large_001 | AC | 40 ms | 1056 KiB |
| 33_low_loop_large_002 | AC | 34 ms | 1056 KiB |
| 33_low_loop_large_003 | AC | 29 ms | 928 KiB |
| 33_low_loop_large_004 | AC | 44 ms | 1308 KiB |
| 33_low_loop_large_005 | AC | 33 ms | 976 KiB |
| 33_low_loop_large_006 | AC | 40 ms | 1052 KiB |
| 33_low_loop_large_007 | AC | 41 ms | 1068 KiB |
| 33_low_loop_large_008 | AC | 39 ms | 1048 KiB |
| 33_low_loop_large_009 | AC | 43 ms | 1180 KiB |
| 90_challenge_00 | AC | 105 ms | 13980 KiB |