Submission #1233741

#TimeUsernameProblemLanguageResultExecution timeMemory
1233741santi3223Soccer Stadium (IOI23_soccer)C++20
8 / 100
1 ms328 KiB
#include <bits/stdc++.h> #include "soccer.h" using namespace std; #define ll long long #define vb vector<bool> #define pb push_back #define ff(aa, bb, cc) for(ll aa = bb; aa < cc; aa++) #define vl vector<ll> #define pll pair<ll, ll> #define fi first #define se second #define ed "\n" #define all(aaa) aaa.begin(), aaa.end() #define rall(aaa) aaa.rbegin(), aaa.rend() ll MOD = 1e9+7; ll x = 0; set<vl> st; vl resp = {9, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 4, 4, 5, 4, 3, 3, 3, 3, 3, 3, 6, 6, 5, 5, 4, 4, 3, 3, 3, 3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 5, 4, 3, 1, 1, 1, 3, 2, 1, 1, 1, 0}; map<vl, ll> mp; void todos(ll curid, ll n, vl& cur){ if(curid == n){ ll sz = st.size(); st.insert(cur); if(st.size() == sz){ return; } //cout << x+1 << ed; /*ff(i, 1, n+1){ cout << cur[i-1] << " "; if(i % 3 == 0){ cout << ed; } }*/ //cout << "===================" << ed; vl ncur(n); vl rf(n); ncur = cur; st.insert(ncur); rf[0] = ncur[2]; rf[1] = ncur[1]; rf[2] = ncur[0]; rf[3] = ncur[5]; rf[4] = ncur[4]; rf[5] = ncur[3]; rf[6] = ncur[8]; rf[7] = ncur[7]; rf[8] = ncur[6]; st.insert(rf); mp[ncur] = resp[x]; mp[rf] = resp[x]; /*cout << ncur[0] << " " << ncur[1] << " " << ncur[2] << " " << rf[0] << " " << rf[1] << " " << rf[2] << ed; cout << ncur[3] << " " << ncur[4] << " " << ncur[5] << " " << rf[3] << " " << rf[4] << " " << rf[5] << ed; cout << ncur[6] << " " << ncur[7] << " " << ncur[8] << " " << rf[6] << " " << rf[7] << " " << rf[8] << ed; cout << ed;*/ ncur[0] = cur[6]; ncur[1] = cur[3]; ncur[2] = cur[0]; ncur[3] = cur[7]; ncur[4] = cur[4]; ncur[5] = cur[1]; ncur[6] = cur[8]; ncur[7] = cur[5]; ncur[8] = cur[2]; st.insert(ncur); rf[0] = ncur[2]; rf[1] = ncur[1]; rf[2] = ncur[0]; rf[3] = ncur[5]; rf[4] = ncur[4]; rf[5] = ncur[3]; rf[6] = ncur[8]; rf[7] = ncur[7]; rf[8] = ncur[6]; st.insert(rf); mp[ncur] = resp[x]; mp[rf] = resp[x]; /*cout << ncur[0] << " " << ncur[1] << " " << ncur[2] << " " << rf[0] << " " << rf[1] << " " << rf[2] << ed; cout << ncur[3] << " " << ncur[4] << " " << ncur[5] << " " << rf[3] << " " << rf[4] << " " << rf[5] << ed; cout << ncur[6] << " " << ncur[7] << " " << ncur[8] << " " << rf[6] << " " << rf[7] << " " << rf[8] << ed; cout << ed;*/ ncur[0] = cur[8]; ncur[1] = cur[7]; ncur[2] = cur[6]; ncur[3] = cur[5]; ncur[4] = cur[4]; ncur[5] = cur[3]; ncur[6] = cur[2]; ncur[7] = cur[1]; ncur[8] = cur[0]; st.insert(ncur); rf[0] = ncur[2]; rf[1] = ncur[1]; rf[2] = ncur[0]; rf[3] = ncur[5]; rf[4] = ncur[4]; rf[5] = ncur[3]; rf[6] = ncur[8]; rf[7] = ncur[7]; rf[8] = ncur[6]; st.insert(rf); mp[ncur] = resp[x]; mp[rf] = resp[x]; /*cout << ncur[0] << " " << ncur[1] << " " << ncur[2] << " " << rf[0] << " " << rf[1] << " " << rf[2] << ed; cout << ncur[3] << " " << ncur[4] << " " << ncur[5] << " " << rf[3] << " " << rf[4] << " " << rf[5] << ed; cout << ncur[6] << " " << ncur[7] << " " << ncur[8] << " " << rf[6] << " " << rf[7] << " " << rf[8] << ed; cout << ed;*/ ncur[0] = cur[2]; ncur[1] = cur[5]; ncur[2] = cur[8]; ncur[3] = cur[1]; ncur[4] = cur[4]; ncur[5] = cur[7]; ncur[6] = cur[0]; ncur[7] = cur[3]; ncur[8] = cur[6]; st.insert(ncur); rf[0] = ncur[2]; rf[1] = ncur[1]; rf[2] = ncur[0]; rf[3] = ncur[5]; rf[4] = ncur[4]; rf[5] = ncur[3]; rf[6] = ncur[8]; rf[7] = ncur[7]; rf[8] = ncur[6]; st.insert(rf); mp[ncur] = resp[x]; mp[rf] = resp[x]; /*cout << ncur[0] << " " << ncur[1] << " " << ncur[2] << " " << rf[0] << " " << rf[1] << " " << rf[2] << ed; cout << ncur[3] << " " << ncur[4] << " " << ncur[5] << " " << rf[3] << " " << rf[4] << " " << rf[5] << ed; cout << ncur[6] << " " << ncur[7] << " " << ncur[8] << " " << rf[6] << " " << rf[7] << " " << rf[8] << ed; cout << ed; cout << "=====================" << ed;*/ //cout << ed << ed; x++; return; } vl ac = cur; todos(curid+1, n, ac); ac[curid] = 1; todos(curid+1, n, ac); } int biggest_stadium(int n, std::vector<std::vector<int>> F){ ll q = 0, xx = 0, y = 0; ff(i, 0, n){ ff(j, 0, n){ if(F[i][j] == 1){ q++; y = i; xx = j; } } } if(q == 1){ ll minn = (xx+1)*(y+1); minn = min(minn, (n-xx)*(y+1)); minn = min(minn, (xx+1)*(n-y)); minn = min(minn, (n-xx)*(n-y)); return (n*n)-minn; } vl trash(9, 0); todos(0, 9, trash); vl xxx; ff(i, 0, n){ ff(j, 0, n){ xxx.pb(F[i][j]); } } return mp[xxx]; } /* void other(){ cout << "{"; vl nw; ff(i, 0, 102){ ll xx; cin >> xx; nw.pb(xx); cout << xx << ", "; } cout << "}" << ed << nw.size(); }*/ /* int main(){ vl cur(9, 0); todos(0, 9, cur); other(); }*/ /* int main(){ ll t; cin >> t; while(t--){ int N; cin >> N; std::vector<std::vector<int>> F(N, std::vector<int>(N)); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cin >> F[i][j]; } } int res = biggest_stadium(N, F); cout << res << ed; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...