# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
706971 |
2023-03-08T08:09:24 Z |
socpite |
ICC (CEOI16_icc) |
C++14 |
|
132 ms |
516 KB |
#include"icc.h"
#include<bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define f first
#define s second
typedef long long ll;
typedef long double ld;
const int maxn = 105;
const int mod = 998244353;
int t, n;
map<int, int> mp;
/*int query(int sza, int szb, int a[], int b[]){
cout << sza << endl;
for(int i = 0; i < sza; i++)cout << a[i] << " ";
cout << endl;
cout << szb << endl;
for(int i = 0; i < szb; i++)cout << b[i] << " ";
cout << endl;
int x;
cin >> x;
return x;
}
void setRoad(int a, int b){
cout << "FOUND " << a << " " << b << endl;
}*/
int up[maxn];
int Find(int x){
if(!up[x])return x;
else return up[x] = Find(up[x]);
}
void Union(int a, int b){
a = Find(a);
b = Find(b);
up[a] = b;
}
int arr1[maxn], arr2[maxn];
int gt(vector<int> a, vector<int> b){
//cout << a.size() << " " << b.size() << "\n";
if(a.empty() || b.empty())return 0;
for(int i = 0; i < a.size(); i++)arr1[i] = a[i];
for(int i = 0; i < b.size(); i++)arr2[i] = b[i];
return query(a.size(), b.size(), arr1, arr2);
}
int bs(vector<int> a, vector<int> b){
int l = 0, r = a.size()-1;
shuffle(a.begin(), a.end(), rng);
shuffle(b.begin(), b.end(), rng);
while(l < r){
int mid = (l+r+1)>>1;
if(gt(vector<int>(a.begin(), a.begin()+mid), b))r = mid-1;
else l = mid;
}
return a[l];
}
void findedge(vector<int> a, vector<int> b){
assert(!a.empty() && !b.empty());
int h1 = bs(a, b), h2 = bs(b, a);
Union(h1, h2);
setRoad(h1, h2);
}
void run(int N){
n = N;
for(int i = 0; i < n-1; i++){
mp.clear();
int crr = 0;
vector<int> ord;
for(int i = 1; i <= n; i++)ord.push_back(i);
shuffle(ord.begin(), ord.end(), rng);
for(auto i: ord)if(mp.find(Find(i)) == mp.end())mp[Find(i)] = crr++;
ord.clear();
for(int i = 0; i < 10; i++)ord.push_back(i);
shuffle(ord.begin(), ord.end(), rng);
for(auto j: ord){
//cout << i << " " << j << endl;
vector<int> v[2];
for(int k = 1; k <= n; k++)v[(mp[Find(k)]>>j)&1].push_back(k);
//cout << v[0].size() << " " << v[1].size() << endl;
if(gt(v[0], v[1])){
findedge(v[0], v[1]);
break;
}
}
}
}
Compilation message
icc.cpp: In function 'int gt(std::vector<int>, std::vector<int>)':
icc.cpp:54:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
54 | for(int i = 0; i < a.size(); i++)arr1[i] = a[i];
| ~~^~~~~~~~~~
icc.cpp:55:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
55 | for(int i = 0; i < b.size(); i++)arr2[i] = b[i];
| ~~^~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
468 KB |
Ok! 103 queries used. |
2 |
Correct |
5 ms |
500 KB |
Ok! 101 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
34 ms |
500 KB |
Ok! 557 queries used. |
2 |
Correct |
39 ms |
468 KB |
Ok! 690 queries used. |
3 |
Correct |
39 ms |
492 KB |
Ok! 679 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
119 ms |
504 KB |
Ok! 1478 queries used. |
2 |
Correct |
132 ms |
516 KB |
Ok! 1658 queries used. |
3 |
Correct |
116 ms |
508 KB |
Ok! 1555 queries used. |
4 |
Correct |
123 ms |
468 KB |
Ok! 1557 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
123 ms |
500 KB |
Ok! 1579 queries used. |
2 |
Correct |
124 ms |
512 KB |
Ok! 1585 queries used. |
3 |
Correct |
129 ms |
508 KB |
Ok! 1668 queries used. |
4 |
Correct |
117 ms |
516 KB |
Ok! 1515 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
129 ms |
516 KB |
Ok! 1652 queries used. |
2 |
Correct |
132 ms |
500 KB |
Ok! 1676 queries used. |
3 |
Correct |
129 ms |
504 KB |
Ok! 1658 queries used. |
4 |
Correct |
130 ms |
504 KB |
Ok! 1641 queries used. |
5 |
Correct |
121 ms |
508 KB |
Ok! 1546 queries used. |
6 |
Correct |
124 ms |
496 KB |
Ok! 1599 queries used. |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
125 ms |
508 KB |
Too many queries! 1654 out of 1625 |
2 |
Halted |
0 ms |
0 KB |
- |