Submission #1233730

#TimeUsernameProblemLanguageResultExecution timeMemory
1233730santi3223Soccer Stadium (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...