Submission #1029750

#TimeUsernameProblemLanguageResultExecution timeMemory
1029750vjudge1Art Collections (BOI22_art)C++17
0 / 100
0 ms344 KiB
#include "art.h" //Dost SEFEROĞLU #include <bits/stdc++.h> using namespace std; //#define int long long #define pii pair<int,int> #define ff first #define ss second #define sp << " " << #define vi vector<int> #define all(xx) xx.begin(),xx.end() // // --- 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) { std::vector<int> order; vi ans(N); vi have(N,1); for (int i=0;i<N;i++) order.push_back(i+1); int x = publish(order); int curptr = 0; int ptr = 0; int nn = N+2; while (curptr < N-curptr-1) { nn-=2; swap(order[ptr],order[N-1]); int y = publish(order); if (x < y) { swap(order[ptr],order[N-1]); int temp = order[N-1]; for (int i=N-1;i>=ptr+2;i--) order[i] = order[i-1]; order[ptr+1] = temp; int z = publish(order); int delta = z-x; int dd = ((y-x)+1)/2; //cout << x sp y sp dd << endl; int cur = 0; int r = (nn+delta+2)/2; ////cout << r sp dd << endl; for (int i=0;i<N;i++) { if (have[i]) cur++; else continue; if (cur == r-dd) { //cout << "PUT" sp curptr sp i+1 << endl; ans[curptr] = i+1; have[i] = 0; } else if (cur == r) { //cout << "PUT" sp N-curptr-1 sp i+1 << endl; ans[N-curptr-1] = i+1; have[i] = 0; } } curptr++; x = z; } else{ swap(order[ptr],order[N-1]); int temp = order[N-1]; for (int i=ptr+2;i<N;i++) order[i] = order[i-1]; order[ptr+1] = temp; int z = publish(order); int delta = z-x; int cur = 0; int dd = ((x-y)+1)/2; int r = (nn+delta)/2; //cout << r sp dd << endl; for (int i=0;i<N;i++) { if (have[i]) cur++; else continue; if (cur == r) { ans[N-curptr-1] = i+1; have[i] = 0; } else if (cur == r+dd) { ans[curptr] = i+1; have[i] = 0; } } curptr++; x = z; } ptr+=2; /* for (int i=0;i<N;i++) cout << ans[i] << " "; cout << endl; */ } if (curptr == N-curptr-1) { for (int i=0;i<N;i++) { if (have[i]) { ans[curptr] = i+1; break; } } } 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...