結果
問題 | No.1225 I hate I hate Matrix Construction |
ユーザー |
![]() |
提出日時 | 2020-09-11 21:47:34 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,609 bytes |
コンパイル時間 | 1,894 ms |
コンパイル使用メモリ | 176,144 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-27 11:03:41 |
合計ジャッジ時間 | 3,154 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 35 |
ソースコード
#include "bits/stdc++.h" //#include <atcoder/all> using namespace std; //using namespace atcoder; #define ll long long ll INF = (1LL << 60); signed main() { int N; cin >> N; vector<int>S(N), T(N); for (int i = 0; i < N; i++)cin >> S[i]; for (int i = 0; i < N; i++)cin >> T[i]; vector<vector<int>>G(N, vector<int>(N)); vector<bool>okS(N), okT(N); for (int i = 0; i < N; i++) { if (S[i] == 2) { for (int j = 0; j < N; j++) { G[i][j] = 1; okS[j] = true; } } if (T[i] == 2) { for(int j = 0; j < N; j++){ G[j][i] = 1; okT[j] = true; } } } for (int i = 0; i < N; i++) { bool ok = false; for (int j = 0; j < N; j++) { if (G[i][j] == 1)ok = true; } if (S[i] == 1 && !ok) { for (int j = 0; j < N; j++) { if (!okT[j] && T[j] != 0) { G[i][j] = 1; okS[i] = true; okT[j] = true; goto t; } } for (int j = 0; j < N; j++) { if (okT[j]) { G[i][j] = 1; okS[i] = true; okT[j] = true; goto t; } } t:; } } for (int i = 0; i < N; i++) { bool ok = false; for (int j = 0; j < N; j++) { if (G[j][i] == 1)ok = true; } if (T[i] == 1 && !ok) { for (int j = 0; j < N; j++) { if (!okS[j] && S[j] != 0) { G[j][i] = 1; okS[j] = true; okT[i] = true; goto f; } } for (int j = 0; j < N; j++) { if (okS[j]) { G[j][i] = 1; okS[j] = true; okT[i] = true; goto f; } } f:; } } int ans = 0; for (int i = 0; i < N; i++)for (int j = 0; j < N; j++) { if (G[i][j]) { ans++; } } cout << ans << endl; return 0; }