#include "coloring.h"
#include<vector>
#include<algorithm>
#include<set>
using namespace std;
int colorCnt;
int find_back(int x, vector<int> cands) {
random_shuffle(cands.begin(), cands.end());
int lo = 0, hi = cands.size() - 1;
while (lo < hi) {
int mid = (lo + hi) / 2;
// color lo...mid
for (int i = lo; i <= mid; i++) Color(cands[i]), colorCnt++;
int cnt = GetColor(x);
if (!cnt) hi = mid;
else lo = mid + 1;
}
return cands[lo];
}
void ColoringSame(int N){
colorCnt = 0;
vector<int> chain;
set<int> cands;
for (int i = 2; i <= N; i++) cands.insert(i);
chain.push_back(find_back(1, vector<int>(cands.begin(), cands.end())));
cands.erase(cands.find(chain.back()));
while (1) {
int X = chain.size();
int left = 1 + (N - X - 1)*(N - X - 1) + X;
if (colorCnt + left <= 7300) {
Color(1);
for (int c : cands) for (int c : cands) Color(c);
reverse(chain.begin(), chain.end());
for (int x : chain) Color(x);
return;
}
else {
chain.push_back(find_back(1, vector<int>(cands.begin(), cands.end())));
cands.erase(cands.find(chain.back()));
}
}
}
Compilation message
coloring.cpp: In function 'void ColoringSame(int)':
coloring.cpp:37:13: warning: unused variable 'c' [-Wunused-variable]
for (int c : cands) for (int c : cands) Color(c);
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
1940 KB |
Output is correct |
2 |
Correct |
0 ms |
1940 KB |
Output is correct |
3 |
Correct |
0 ms |
1940 KB |
Output is correct |
4 |
Correct |
0 ms |
1940 KB |
Output is correct |
5 |
Correct |
0 ms |
1940 KB |
Output is correct |
6 |
Correct |
0 ms |
1940 KB |
Output is correct |
7 |
Correct |
0 ms |
1940 KB |
Output is correct |
8 |
Correct |
0 ms |
1940 KB |
Output is correct |
9 |
Correct |
0 ms |
1940 KB |
Output is correct |
10 |
Correct |
0 ms |
1940 KB |
Output is correct |
11 |
Correct |
0 ms |
1940 KB |
Output is correct |
12 |
Correct |
0 ms |
1940 KB |
Output is correct |
13 |
Correct |
0 ms |
1940 KB |
Output is correct |
14 |
Correct |
0 ms |
1940 KB |
Output is correct |
15 |
Correct |
0 ms |
1940 KB |
Output is correct |
16 |
Incorrect |
0 ms |
1940 KB |
Output isn't correct |
17 |
Halted |
0 ms |
0 KB |
- |