Submission #943715

#TimeUsernameProblemLanguageResultExecution timeMemory
943715tmarcinkeviciusArt Collections (BOI22_art)C++17
100 / 100
1368 ms1456 KiB
#include <bits/stdc++.h>
#include "art.h"

using namespace std;
//
// --- Sample implementation for the task art ---
//
// To compile this program with the sample grader, place:
//     art.h art_sample.cpp sample_grader.cpp
// in a single folder, then open the terminal in this directory (right-click onto an empty spot in the directory,
// left click on "Open in terminal") and enter e.g.:
//     g++ -std=c++17 art_sample.cpp sample_grader.cpp
// in this folder. This will create a file a.out in the current directory which you can execute from the terminal
// as ./a.out
// See task statement or sample_grader.cpp for the input specification
//
void solve(int N)
{
    vector<int> ans;
    for (int i = 1; i <= N; i++)
    {
        ans.push_back(i);
    }

    int best = publish(ans);

    for (int i = 1; i < N; i++)
    {
        vector<int> ans2 = ans;
        ans2[0] = ans[i];
        for (int j = 1; j <= i; j++)
        {
            ans2[j] = ans[j - 1];
        }

        /*cout << "after swap, ans2 = {";
        for (int j : ans2)
        {
            cout << j << " ";
        }
        cout << "}\n";*/

        int candidate = publish(ans2);

        int newVal = i - candidate + best;
        // cout << "best = " << best << ", candidate = " << candidate << ", newVal = " << newVal << '\n';
        assert(newVal % 2 == 0);
        newVal /= 2;

        best -= newVal;
        newVal = i - newVal;
        // cout << "newVal = " << newVal << '\n';

        ans2 = ans;
        for (int j = newVal + 1; j <= i; j++)
        {
            ans[j] = ans2[j - 1];
        }

        ans[newVal] = ans2[i];

        /*cout << "now ans: ";
        for (int j : ans)
        {
            cout << j << " ";
        }
        cout << '\n';*/
    }

    answer(ans);
}

Compilation message (stderr)

interface.cpp: In function 'int publish(std::vector<int>)':
interface.cpp:20:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   20 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
interface.cpp: In function 'void answer(std::vector<int>)':
interface.cpp:36:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   36 |     if(v.size() != N) {
      |        ~~~~~~~~~^~~~
#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...