Submission #1246192

#TimeUsernameProblemLanguageResultExecution timeMemory
1246192KindaGoodGamesCubeword (CEOI19_cubeword)C++20
0 / 100
1176 ms407776 KiB
#pragma GCC optimize("O3, unroll-loops, Ofast") #include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define tiii tuple<int,int,int> int mod = 998244353; vector<vector<int>> pos; vector<int> cur; void gen(int n){ if(n == 0){ pos.push_back(cur); return; } for(int i = 0; i < 7; i++){ cur.push_back(i); gen(n-1); cur.pop_back(); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<tiii> arr(n); vector<vector<vector<int>>> cnt(8, vector<vector<int>>(26, vector<int>(26))); set<string> occ; for(int i = 0; i < n; i++){ string s; cin >> s; string r = s; reverse(r.begin(),r.end()); arr[i] = {s.size(), s[0]-'a', s.back()-'a'}; if(occ.count(r) || occ.count(s)) continue; cnt[s.size()-3][s[0]-'a'][s.back()-'a']++; if(r != s){ cnt[s.size()-3][s[0]-'a'][s.back()-'a']++; } } auto start = clock(); set<pii> edges; for(int v = 0; v < 4; v++){ auto ins = [&](int a, int b){ if(a > b) swap(a,b); edges.insert({a,b}); }; ins(v, (v+1)%4); ins(v, (v+3)%4); ins(v, v+4); ins(4+v, 4+((v+1)%4)); ins(4+v, 4+((v+3)%4)); } gen(8); int res = 0; cerr << pos.size() << endl; for(auto corners : pos){ for(int l = 3; l <= 10; l++){ int cp = 1; for(auto e : edges){ cp *= cnt[l-3][corners[e.first]][corners[e.second]]; cp %= mod; } res += cp; res %= mod; } } auto end = clock(); cout << res << endl; cerr << end-start << "ms elapsed" << endl; }

Compilation message (stderr)

cubeword.cpp:1:47: warning: bad option '-f unroll-loops' to pragma 'optimize' [-Wpragmas]
    1 | #pragma GCC optimize("O3, unroll-loops, Ofast")
      |                                               ^
cubeword.cpp:1:47: warning: bad option '-f Ofast' to pragma 'optimize' [-Wpragmas]
cubeword.cpp:12:15: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   12 | void gen(int n){
      |               ^
cubeword.cpp:12:15: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
cubeword.cpp:24:10: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   24 | int main(){
      |          ^
cubeword.cpp:24:10: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
cubeword.cpp: In function 'int main()':
cubeword.cpp:54:36: warning: bad option '-f unroll-loops' to attribute 'optimize' [-Wattributes]
   54 |         auto ins = [&](int a, int b){
      |                                    ^
cubeword.cpp:54:36: warning: bad option '-f Ofast' to attribute 'optimize' [-Wattributes]
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...