Submission #738391

#TimeUsernameProblemLanguageResultExecution timeMemory
738391sandry24Costinland (info1cup19_costinland)C++17
100 / 100
1 ms212 KiB
#include <bits/stdc++.h> //#include "grader.h" using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") typedef long long ll; typedef vector<int> vi; typedef pair<int, int> pi; #define pb push_back #define mp make_pair #define f first #define s second vi rems; int get_log(ll k){ int cnt = 0; while(k > 0){ cnt++; rems.pb(k % 6); k /= 6; } return cnt; } int get_log2(ll k){ int cnt = 0; while(k > 0){ cnt++; k /= 2; } return cnt; } ll check(vector<vector<char>> &grid, int n, int m){ ll r[1000][1000], d[1000][1000]; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ r[i][j] = d[i][j] = 0; } } r[0][0] = 1; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(i == n-1 && j == m-1) continue; if(grid[i][j] == '.'){ r[i][j+1] += r[i][j]; d[i+1][j] += d[i][j]; } else if(grid[i][j] == 'X'){ r[i][j+1] += r[i][j] + d[i][j]; d[i+1][j] += r[i][j] + d[i][j]; } else if(grid[i][j] == 'r'){ r[i][j+1] += r[i][j] + d[i][j]; } else { d[i+1][j] += r[i][j] + d[i][j]; } } } ll ans = r[n-1][m-1] + d[n-1][m-1]; /*for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cout << setw(4) << r[i][j] + d[i][j]; } cout << '\n'; }*/ return ans; } void under_19(ll k){ if(k == 19){ cout << "5 5\nXXXXd\nXXXXd\ndrrrd\nXXXXd\nrrrr.\n"; return; } int n = get_log2(k); vector<vector<char>> a(n+1, vector<char>(n+1, '.')); for(int i = 0; i < n-1; i++){ a[i][i] = 'X'; a[i+1][i] = ((1LL << i) & k ? 'X' : 'r'); a[i][i+1] = 'd'; } for(int i = 0; i <= n; i++){ a[n][i] = 'r'; a[i][n] = 'd'; } a[n][n] = '.'; cout << n+1 << ' ' << n+1 << '\n'; for(int i = 0; i <= n; i++){ for(int j = 0; j <= n; j++) cout << a[i][j]; cout << '\n'; } } void solve(){ rems.clear(); ll k; cin >> k; if(k <= 19){ under_19(k); return; } int n = get_log(k) * 2, sz = 49; //for(auto i : rems) //cout << i << ' '; //cout << '\n'; vector<vector<char>> a(sz, vector<char>(sz, '.')); for(int i = 0; i < n-2; i += 2){ a[i][i] = a[i+1][i] = a[i][i+1] = a[i+1][i+1] = 'X'; a[i][i+2] = a[i+1][i+2] = 'd'; a[i+2][i] = a[i+2][i+1] = 'r'; } for(int i = 0; i < rems.size()-1; i++){ int ind = i*2; if(rems[i] == 0) continue; if(rems[i] == 1){ a[ind+2][ind] = 'X'; continue; } if(rems[i] == 2){ a[ind][ind+2] = 'X'; a[ind+2][ind] = 'X'; continue; } a[ind+2][ind] = 'X'; a[ind][ind+2] = 'X'; int down = (rems[i]-2) / 2; int right = (rems[i]-2) - down; for(int j = 0; j < down; j++){ a[ind+3+j][ind] = 'X'; a[ind+3+j][ind+1] = 'd'; } for(int j = 0; j < right; j++){ a[ind][ind+3+j] = 'X'; a[ind+1][ind+3+j] = 'r'; } } for(int i = 0; i < sz; i++){ a[sz-1][i] = 'r'; a[i][sz-1] = 'd'; } a[sz-1][sz-1] = '.'; if(rems.back() == 2){ a[n-2][n-2] = 'X'; } else if(rems.back() == 3){ a[n-2][n-2] = a[n-1][n-2] = 'X'; } else if(rems.back() == 4){ a[n-2][n-2] = a[n-1][n-2] = a[n-2][n-1] = 'X'; } else if(rems.back() == 5){ a[n-2][n-2] = a[n-1][n-2] = a[n][n-2] = a[n-2][n-1] = 'X'; } cout << sz << ' ' << sz << '\n'; for(int i = 0; i < sz; i++){ for(int j = 0; j < sz; j++) cout << a[i][j]; cout << '\n'; } //cout << check(a, sz, sz) << '\n'; } int main(){ //freopen("input.txt", "r", stdin); //freopen("test.out", "w", stdout); ios::sync_with_stdio(0); cin.tie(0); int t = 1; ///cin >> t; while(t--){ solve(); } }

Compilation message (stderr)

costinland.cpp: In function 'void solve()':
costinland.cpp:114:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  114 |     for(int i = 0; i < rems.size()-1; i++){
      |                    ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...