제출 #1233730

#제출 시각아이디문제언어결과실행 시간메모리
1233730santi3223축구 경기장 (IOI23_soccer)C++20
0 / 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, 5, 5, 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){ vl trash(9, 0); todos(0, 9, trash); vl xx; ff(i, 0, n){ ff(j, 0, n){ xx.pb(F[i][j]); } } return mp[xx]; } /* 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() { int N; assert(1 == scanf("%d", &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++) { assert(1 == scanf("%d", &F[i][j])); } } fclose(stdin); int res = biggest_stadium(N, F); printf("%d\n", res); fclose(stdout); 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...