제출 #1169189

#제출 시각아이디문제언어결과실행 시간메모리
1169189jerzykPainting Squares (IOI20_squares)C++20
0 / 100
0 ms424 KiB
#include <bits/stdc++.h>
#include "squares.h"

using namespace std;
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef long double ld;
const ll I = 1000'000'000'000'000'000LL;
const int II = 2'000'000'000;
const ll M = 1000'000'007LL;
const int N = 1000;
const int K = 10;
bool czyinit = 0;
string s = "000000000010000000011000000010100000001110000001001000000101100000011010000001111000001000100000100110000010101000001011100000110010000011011000001110100000111110000100001000110000100101000010011100001010010000101011000010110100001011110000110001000011001100001101010000110111000011100100001110110000111101000011111100010001010001000111000100100100010010110001001101000100111100010100110001010101000101011100010110010001011011000101110100010111110001100011001010001100111000110100100011010110001101101000110111100011100110001110101000111011100011110010001111011000111110100011111110010010011001001010100100101110010011011001001110100100111110010100101001110010101011001010110100101011110010110011001011010100101101110010111011001011110100101111110011001101001100111100110101010011010111001101101100110111010011011111001110011101011001110110100111011110011110101001111011100111110110011111101001111111101010101011101010110110101011111010110101101111010111011101011110110101111111011011011101101111110";
int wh[(1<<(K + 1))];

vector<int> paint(int n)
{
    vector<int> ans;
    for(int i = 0; i < n; ++i)
        ans.pb(s[i] - '0');
    ans.pb(K);
    return ans;
}

void init()
{
    czyinit = 1;
    for(int i = 0; i <= N - K; ++i)
    {
        int cur = 0;
        for(int j = 0; j < K; ++j)
            cur += (1<<j) * (int)(s[i] - '0');
        wh[cur] = i;
    }
}

int find_location(int n, vector<int> c)
{
    if(!czyinit) init();
    if(c.back() == -1)
    {
        while(c.back() == -1)
            c.pop_back();
        return n - (int)c.size();
    }
    int cur = 0;
    for(int i = 0; i < (int)c.size(); ++i)
        cur += (1<<i) * c[i];
    return wh[cur];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...