Submission #1168373

#TimeUsernameProblemLanguageResultExecution timeMemory
1168373SmuggingSpunPainting Squares (IOI20_squares)C++20
100 / 100
357 ms464 KiB
#include "squares.h" #include<bits/stdc++.h> using namespace std; vector<int>get_euler(){ vector<vector<int>>g(512); for(int i = 0; i < 512; i++){ int j = (i << 1) & 511; g[i].emplace_back(j); g[i].emplace_back(j | 1); } vector<int>path; stack<int>st; st.push(0); while(!st.empty()){ int u = st.top(); if(g[u].empty()){ path.emplace_back(u & 1); st.pop(); } else{ st.push(g[u].back()); g[u].pop_back(); } } for(int i = 0; i < 9; i++){ path.emplace_back(0); } return path; } vector<int>paint(int n){ vector<int>ans = get_euler(); while(ans.size() > n){ ans.pop_back(); } ans.emplace_back(10); return ans; } int find_location(int n, vector<int>c){ if(c[9] == -1){ for(int i = 0; i < 9; i++){ if(c[i] == -1){ return n - i; } } return n - 9; } vector<int>euler = get_euler(); int ans = 0; while(true){ bool flag = true; for(int j = 0; j < 10; j++){ if(euler[ans + j] != c[j]){ flag = false; break; } } if(flag){ break; } ans++; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...