제출 #173965

#제출 시각아이디문제언어결과실행 시간메모리
173965_EnkognitRed-blue table (IZhO19_stones)C++14
69 / 100
47 ms8568 KiB
#include <bits/stdc++.h> //#include <ext/pb_ds/assoc_container.hpp> #pragma GCC optimize("-O3") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #define ll long long #define mp make_pair #define pb push_back #define ld long double #define fi first #define se second #define pld pair<ld,ld> #define pll pair<ll,ll> #define sqr(a) ((a)*(a)) #define pii pair<int,int> #define y1 Enkognit #define sqr(a) ((a)*(a)) using namespace std; mt19937_64 rnd(chrono::system_clock::now().time_since_epoch().count()); const ll md1=1e9+7, md2=998244357, md3=rnd()%(ll)(1e8), p1=31, p2=37, p3=41; //template <typename T> //using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; ll n, m, k, l, r, i, j, a[1001][1001], b[1001], c[1001]; pll next(pll o) { if (o.se==m) o.fi++, o.se=1; else o.se++; return o; } ll check() { ll ans=0; for (int i = 1; i <= n; i++) { ll o=0; for (int j = 1; j <= m; j++) o+=(a[i][j]==0); ans+=(o>m/2); } for (int i = 1; i <= m; i++) { ll o=0; for (int j = 1; j <= n; j++) o+=(a[j][i]); ans+=(o>n/2); } return ans; } void rec(pll u) { ll i=u.fi, j=u.se; //cout << i << " " << j << "\n"; a[i][j]=1; if (i==n && j==m) { ll p=check(); if (p>15) { cout << p << "\n"; for (int i = 1 ;i <= n; i++) { for (int j = 1;j <= m; j++) cout << a[i][j] << " "; cout << "\n"; } system("pause"); } }else rec(next(mp(i,j))); a[i][j]=0; if (i==n && j==m) { ll p=check(); if (p>15) { cout << p << "\n"; for (int i = 1 ;i <= n; i++) { for (int j = 1;j <= m; j++) cout << a[i][j] << " "; cout << "\n"; } system("pause"); } }else rec(next(mp(i,j))); } int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); //ios_base::sync_with_stdio(0); //cin.tie(0); //n=3, m=14; //rec(mp(1,1)); ll q; cin >> q; while (q--) { cin >> n >> m; for (int i = 1; i <= max(n,m); i++) b[i]=0,c[i]=0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) {a[i][j]=(i+j)%2;b[i]+=((i+j)%2==0);c[j]+=(i+j)%2;} for (int i = 1; i <= m; i++) if (c[i]==n/2 && a[1][i]==0) { a[1][i]=1; b[1]--; c[i]++; } if (n%2==0) for (int i = 1; i <= m; i++) if (c[i]==n/2 && a[n][i]==0) { a[n][i]=1; b[n]--; c[i]++; } for (int i = 1; i <= n; i++) if (b[i]==m/2 && a[i][1]==1) { a[i][1]=0; c[1]--; b[i]++; } if (m%2==0) for (int i = 1; i <= n; i++) if (b[i]==m/2 && a[i][m]==1) { a[i][m]=0; c[m]--; b[i]++; } ll ans=0; for (int i = 1; i <= n; i++) if (b[i]>m/2) {ans++;} //cout << "\n"; for (int i = 1; i <= m; i++) if (c[i]>n/2) {ans++;} if ((m+(n+1)/2-1)/((n+1)/2)<(m+1)/2 && ans<m+(n+1)/2 && m+(n+1)/2>(n-1)/2+m && n+(m+1)/2<=m+(n+1)/2) { cout << m+(n+1)/2 << "\n"; for (int i = 1; i <= n/2; i++) { for (int j = 1; j <= m; j++) cout << "-"; cout << "\n"; } ll l=1; for (int i = n/2+1; i <= n; i++) { for (int j = 1; j <= m; j++) if (j%((n+1)/2)==l%((n+1)/2)) cout << "-"; else cout << "+"; cout << "\n"; l++; } continue; } if ((n+(m+1)/2-1)/((m+1)/2)<(n+1)/2 && ans<n+(m+1)/2 && n+(m+1)/2>(m-1)/2+n) { cout << n+(m+1)/2 << "\n"; ll l=1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= (m+1)/2; j++) if (j%((m+1)/2)==l%((m+1)/2)) cout << "+"; else cout << "-"; for (int j = (m+1)/2+1; j <= m; j++) cout << "+"; l++; cout << "\n"; } continue; } //cout << "\n"; if (ans>=(n-1)/2+m && ans>=(m-1)/2+n) { cout << ans << "\n"; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) if (a[i][j]) cout << '-'; else cout << "+"; cout << "\n"; } }else if (ans<=(n-1)/2+m && (n-1)/2+m>=(m-1)/2+n) { cout << (n-1)/2+m << "\n"; for (int i = 1; i <= (n-1)/2; i++) { for (int j = 1; j <= m; j++) cout << "+"; cout << "\n"; } for (int i = (n-1)/2+1; i <= n; i++) { for (int j = 1; j <= m; j++) cout << "-"; cout << "\n"; } }else if (ans<=(m-1)/2+n && (n-1)/2+m<=(m-1)/2+n) { cout << (m-1)/2+n << "\n"; for (int i = 1; i <= n; i++) { for (int j = 1; j <= (m-1)/2; j++) cout << "-"; for (int j = (m-1)/2+1; j <= m; j++) cout << "+"; cout << "\n"; } } } }

컴파일 시 표준 에러 (stderr) 메시지

stones.cpp: In function 'void rec(std::pair<long long int, long long int>)':
stones.cpp:73:19: warning: ignoring return value of 'int system(const char*)', declared with attribute warn_unused_result [-Wunused-result]
             system("pause");
             ~~~~~~^~~~~~~~~
stones.cpp:89:19: warning: ignoring return value of 'int system(const char*)', declared with attribute warn_unused_result [-Wunused-result]
             system("pause");
             ~~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...