結果
問題 | No.1398 調和の魔法陣 (構築) |
ユーザー | 沙耶花 |
提出日時 | 2021-02-19 21:52:20 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 7 ms / 3,153 ms |
コード長 | 874 bytes |
コンパイル時間 | 3,072 ms |
コンパイル使用メモリ | 200,476 KB |
最終ジャッジ日時 | 2025-01-18 23:49:09 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000 int main(){ int W,H,X; cin>>W>>H>>X; vector<string> ans(H,string(W,'0')); vector<vector<int>> t = { {1},{0},{0,1} }; if(X!=0){ int w = t[W%3].size(),h = t[H%3].size(); vector<int> cnt(h*w,0); rep(i,cnt.size()){ if(X<=9){ cnt[i] = X; X = 0; break; } else{ cnt[i] = 9; X -= 9; } } if(X!=0){ cout<<-1<<endl; return 0; } rep(i,H){ rep(j,W){ int y = -1,x = -1; rep(k,t[H%3].size()){ if(t[H%3][k]==i%3){ y = k; } } rep(k,t[W%3].size()){ if(t[W%3][k]==j%3){ x = k; } } if(y==-1||x==-1)continue; ans[i][j] = '0' + cnt[y*w+x]; } } } rep(i,H){ cout<<ans[i]<<endl; } return 0; }