Submission #526565

#TimeUsernameProblemLanguageResultExecution timeMemory
526565asdf2727Red-blue table (IZhO19_stones)C++17
100 / 100
37 ms1264 KiB
#include <iostream> int main() { int nrt, sizx, sizy; int sizx1, sizx2, sizy1, sizy2; int ans; int pos; std::cin >> nrt; while (nrt--) { std::cin >> sizx >> sizy; if (sizx <= sizy && sizx < 3) { std::cout << sizy << '\n'; for (int index = 0; index < sizx; index++) { for (int index2 = 0; index2 < sizy; index2++) { std::cout << '-'; } std::cout << '\n'; } } else if (sizy < 3) { std::cout << sizx << '\n'; for (int index = 0; index < sizx; index++) { for (int index2 = 0; index2 < sizy; index2++) { std::cout << '+'; } std::cout << '\n'; } } else { sizx1 = (sizx - 1) >> 1; sizx2 = (sizx >> 1) + 1; sizy1 = (sizy - 1) >> 1; sizy2 = (sizy >> 1) + 1; ans = sizx + sizy + sizx1 + sizy1 - sizx2 - sizy2; if (ans < sizy + (((sizx - 1) >> 1) * sizy) / ((sizy >> 1) + 1)) { std::cout << sizy + (((sizx - 1) >> 1) * sizy) / ((sizy >> 1) + 1) << '\n'; pos = 0; for (int index = 0; index < (((sizx - 1) >> 1) * sizy) / ((sizy >> 1) + 1); index++) { if (pos + (sizy >> 1) + 1 > sizy) { for (int index2 = 0; index2 < pos + (sizy >> 1) + 1 - sizy; index2++) { std::cout << '+'; } for (int index2 = pos + (sizy >> 1) + 1 - sizy; index2 < pos; index2++) { std::cout << '-'; } for (int index2 = pos; index2 < sizy; index2++) { std::cout << '+'; } pos += (sizy >> 1) + 1 - sizy; } else { for (int index2 = 0; index2 < pos; index2++) { std::cout << '-'; } for (int index2 = pos; index2 < pos + (sizy >> 1) + 1; index2++) { std::cout << '+'; } for (int index2 = pos + (sizy >> 1) + 1; index2 < sizy; index2++) { std::cout << '-'; } pos += (sizy >> 1) + 1; } std::cout << '\n'; } for (int index = (((sizx - 1) >> 1) * sizy) / ((sizy >> 1) + 1); index < sizx; index++) { for (int index2 = 0; index2 < sizy; index2++) { std::cout << '-'; } std::cout << '\n'; } } else if (ans < sizx + (((sizy - 1) >> 1) * sizx) / ((sizx >> 1) + 1)) { std::cout << sizx + (((sizy - 1) >> 1) * sizx) / ((sizx >> 1) + 1) << '\n'; for (int index = 0; index < sizx; index++) { pos = 0; for (int index2 = 0; index2 < (((sizy - 1) >> 1) * sizx) / ((sizx >> 1) + 1); index2++) { if (pos + (sizx >> 1) + 1 > sizx) { if (pos + (sizx >> 1) + 1 - sizx <= index && index < pos) { std::cout << '+'; } else { std::cout << '-'; } pos += (sizx >> 1) + 1 - sizx; } else { if (pos <= index && index < pos + (sizx >> 1) + 1) { std::cout << '-'; } else { std::cout << '+'; } pos += (sizx >> 1) + 1; } } for (int index2 = (((sizy - 1) >> 1) * sizx) / ((sizx >> 1) + 1); index2 < sizy; index2++) { std::cout << '+'; } std::cout << '\n'; } } else { std::cout << ans << '\n'; for (int index = 0; index < sizx1; index++) { for (int index2 = 0; index2 < sizy1; index2++) { std::cout << '-'; } for (int index2 = sizy1; index2 < sizy; index2++) { std::cout << '+'; } std::cout << '\n'; } for (int index = sizx1; index < sizx2; index++) { for (int index2 = 0; index2 < sizy; index2++) { std::cout << '-'; } std::cout << '\n'; } for (int index = sizx2; index < sizx; index++) { for (int index2 = 0; index2 < sizy2; index2++) { std::cout << '+'; } for (int index2 = sizy2; index2 < sizy; index2++) { std::cout << '-'; } std::cout << '\n'; } } } } return 0; }
#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...