Submission #1029784

#TimeUsernameProblemLanguageResultExecution timeMemory
1029784vjudge1Art Collections (BOI22_art)C++17
70 / 100
824 ms1752 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 = N-1; int nn = N+2; while (curptr < N-curptr-1) { nn-=2; swap(order[0],order[ptr]); int y = publish(order); if (x < y) { int posdiff = (y-x+1)/2; //p[ilk]+posdiff = p[son] swap(order[0],order[ptr]); int temp = order[0]; for (int i=0;i<ptr;i++) order[i] = order[i+1]; order[ptr] = temp; int z = publish(order); int delt = z-x; int r = (nn+1-delt)/2; int cur = 0; for (int j=0;j<N;j++) { if (!have[j]) continue; cur++; if (cur == r) { ans[j] = curptr+1; have[j] = 0; } else if (cur == r+posdiff) { ans[j] = N-curptr; have[j] = 0; } } curptr++; ptr-=2; x = z; } else{ int posdiff = (x-y+1)/2; //p[ilk]-posdiff = p[son] swap(order[0],order[ptr]); int temp = order[0]; for (int i=0;i<ptr;i++) order[i] = order[i+1]; order[ptr] = temp; int z = publish(order); int delt = z-x; int r = (nn+1-delt)/2; int cur = 0; for (int j=0;j<N;j++) { if (!have[j]) continue; cur++; if (cur == r-posdiff) { ans[j] = N-curptr; have[j] = 0; } else if (cur == r) { ans[j] = curptr+1; have[j] = 0; } } curptr++; ptr-=2; x = z; } } for (int i=0;i<N;i++) { if (!ans[i]) { for (int j=0;j<N;j++) { if (have[j]) { ans[i] = curptr+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...