Submission #1168367

#TimeUsernameProblemLanguageResultExecution timeMemory
1168367SmuggingSpunPainting Squares (IOI20_squares)C++20
0 / 100
407 ms508 KiB
#include "squares.h"
#include<bits/stdc++.h>
using namespace std;
vector<int>get_euler(){
    vector<vector<int>>g(1024);
    for(int i = 0; i < 1024; i++){
        int j = (i << 1) & 1023;
        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...