# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
641067 |
2022-09-15T22:50:32 Z |
ymm |
Carnival (CEOI14_carnival) |
C++17 |
|
56 ms |
464 KB |
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll , ll > pll;
using namespace std;
const int N = 160;
int ans[N];
int n;
int ask(vector<int> v)
{
cout << v.size() << ' ';
for (int x : v)
cout << x+1 << ' ';
cout << '\n';
int ans;
cin >> ans;
return ans;
}
void solve(vector<int> v)
{
int len = v.size();
if (len == 1)
return;
solve(vector<int>(v.begin(), v.begin() + len/2));
solve(vector<int>(v.begin() + len/2, v.end()));
vector<vector<int>> cl, cr;
Loop (i,0,len/2) {
while (ans[v[i]] >= cl.size())
cl.emplace_back();
cl[ans[v[i]]].push_back(v[i]);
}
Loop (i,len/2,len) {
while (ans[v[i]] >= cr.size())
cr.emplace_back();
cr[ans[v[i]]].push_back(v[i]);
ans[v[i]] += cl.size();
}
vector<int> rem;
Loop (i,0,cl.size()) {
int l = 0, r = cr.size();
while (l < r) {
int m = (l + r + 1)/2;
vector<int> vec;
vec.push_back(cl[i][0]);
Loop (j,l,m) vec.push_back(cr[j][0]);
if (ask(vec) != vec.size())
r = m-1;
else
l = m;
}
if (l < cr.size()) {
for (int x : cr[l])
ans[x] = i;
rem.push_back(l + cl.size());
}
}
for (int x : v) {
ans[x] -= lower_bound(rem.begin(), rem.end(), ans[x]) - rem.begin();
}
Loop (i,0,n)
cerr << ans[i] << ' ';
cerr << "!\n";
}
int main()
{
ios::sync_with_stdio(false);
cin >> n;
vector<int> vec(n);
iota(vec.begin(), vec.end(), 0);
solve(vec);
cout << "0 ";
Loop (i,0,n)
cout << ans[i]+1 << ' ';
cout << '\n';
}
Compilation message
carnival.cpp: In function 'void solve(std::vector<int>)':
carnival.cpp:33:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
33 | while (ans[v[i]] >= cl.size())
| ~~~~~~~~~~^~~~~~~~~~~~
carnival.cpp:38:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
38 | while (ans[v[i]] >= cr.size())
| ~~~~~~~~~~^~~~~~~~~~~~
carnival.cpp:2:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
2 | #define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
| ^
carnival.cpp:44:2: note: in expansion of macro 'Loop'
44 | Loop (i,0,cl.size()) {
| ^~~~
carnival.cpp:51:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
51 | if (ask(vec) != vec.size())
| ~~~~~~~~~^~~~~~~~~~~~~
carnival.cpp:56:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
56 | if (l < cr.size()) {
| ~~^~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
25 ms |
452 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
15 ms |
464 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
49 ms |
332 KB |
Output is correct |
2 |
Runtime error |
13 ms |
456 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
56 ms |
456 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
56 ms |
336 KB |
Output is correct |
2 |
Runtime error |
36 ms |
456 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |