# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
948847 |
2024-03-18T15:30:00 Z |
phoenix0423 |
ICC (CEOI16_icc) |
C++17 |
|
129 ms |
884 KB |
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
#define fastio ios::sync_with_stdio(false), cin.tie(0)
#define pb push_back
#define eb emplace_back
#define f first
#define s second
#define lowbit(x) x&-x
#include "icc.h"
const int maxn = 105;
int n;
int par[maxn];
int root(int x){ return x == par[x] ? x : par[x] = root(par[x]);}
vector<int> comp[maxn];
set<pair<vector<int>, vector<int>>> used;
bool qry(int sa, int sb, vector<int> a, vector<int> b){
int aa[a.size()], bb[b.size()];
copy(a.begin(), a.end(), aa), copy(b.begin(), b.end(), bb);
return query(sa, sb, aa, bb);
}
void run(int _n){
n = _n;
for(int i = 1; i <= n; i++) comp[i].pb(i), par[i] = i;
random_device rd;
mt19937 rng(rd());
for(int rd = 0; rd < n - 1; rd++){
used.clear();
set<int> st;
for(int i = 1; i <= n; i++) st.insert(root(i));
vector<int> cand;
for(auto x : st) cand.pb(x);
vector<vector<int>> s(2);
// vector<vector<int>> id(2);
bool c = false;
while(!c){
s[0].clear(), s[1].clear();
shuffle(cand.begin(), cand.end(), rng);
for(int i = 0; i < cand.size(); i++){
for(auto u : comp[cand[i]]) s[i % 2].pb(u);
}
if(!s[0].size() || !s[1].size()) continue;
// if(used.count({id[0], id[1]}) || used.count({id[1], id[0]})) continue;
// used.insert({id[0], id[1]});
c = qry(s[0].size(), s[1].size(), s[0], s[1]);
}
int l = 0, r = s[0].size() - 1;
while(l != r){
int m = (l + r) / 2;
vector<int> ns;
for(int i = l; i <= m; i++) ns.pb(s[0][i]);
c = qry(ns.size(), s[1].size(), ns, s[1]);
if(c) r = m;
else l = m + 1;
}
vector<int> tmp(1, s[0][l]);
swap(s[0], tmp);
l = 0, r = s[1].size() - 1;
while(l != r){
int m = (l + r) / 2;
vector<int> ns;
for(int i = l; i <= m; i++) ns.pb(s[1][i]);
c = qry(1, ns.size(), s[0], ns);
if(c) r = m;
else l = m + 1;
}
setRoad(s[0][0], s[1][l]);
int a = root(s[0][0]), b = root(s[1][l]);
par[a] = b;
for(auto x : comp[a]) comp[b].pb(x);
}
}
Compilation message
icc.cpp: In function 'void run(int)':
icc.cpp:42:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
42 | for(int i = 0; i < cand.size(); i++){
| ~~^~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
600 KB |
Ok! 101 queries used. |
2 |
Correct |
7 ms |
604 KB |
Ok! 109 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
33 ms |
604 KB |
Ok! 540 queries used. |
2 |
Correct |
41 ms |
624 KB |
Ok! 825 queries used. |
3 |
Correct |
42 ms |
624 KB |
Ok! 779 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
91 ms |
600 KB |
Ok! 1525 queries used. |
2 |
Correct |
129 ms |
648 KB |
Ok! 2113 queries used. |
3 |
Correct |
102 ms |
640 KB |
Ok! 1728 queries used. |
4 |
Correct |
101 ms |
884 KB |
Ok! 1666 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
96 ms |
600 KB |
Ok! 1604 queries used. |
2 |
Correct |
103 ms |
644 KB |
Ok! 1674 queries used. |
3 |
Correct |
110 ms |
604 KB |
Ok! 1829 queries used. |
4 |
Correct |
93 ms |
604 KB |
Ok! 1559 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
119 ms |
604 KB |
Too many queries! 1846 out of 1775 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
114 ms |
600 KB |
Too many queries! 1901 out of 1625 |
2 |
Halted |
0 ms |
0 KB |
- |