# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
24650 |
2017-06-10T19:49:01 Z |
jiangzhi |
ICC (CEOI16_icc) |
C++14 |
|
3 ms |
2088 KB |
#include <cstdio>
#include <vector>
#include <algorithm>
#include "icc.h"
using namespace std;
const int N = 110;
int a[N];
int size_a;
int b[N];
int size_b;
int t1[N];
int size_t1;
int t2[N];
int size_t2;
int pai[N];
vector<int> aux[N];
int find(int a){
if(pai[a]==a)return a;
return pai[a] = find(pai[a]);
}
void run(int n){
vector<int> total;
for(int i = 1; i <= n; i++){
total.push_back(i);
aux[i].push_back(i);
pai[i]=i;
}
for(int cas = 1; cas <= n - 1; cas++){
while(1){
random_shuffle(total.begin(),total.end());
size_a = 0;
size_b = 0;
for(int i = 0; i < n; i++){
if(i%2==0){
for(int j = 0; j < aux[total[i]].size(); j++){
a[size_a++]=aux[total[i]][j];
}
}
else{
for(int j = 0; j < aux[total[i]].size(); j++){
b[size_b++]=aux[total[i]][j];
}
}
}
if(query(size_a,size_b,a,b))break;
}
while(size_a!=1){
size_t1 = 0;
size_t2 = 0;
for(int i = 0; i < size_a; i++){
if(i%2==0){
t1[size_t1++]=a[i];
}
else{
t2[size_t2++]=a[i];
}
}
if(query(size_t1,size_b,t1,b)){
size_a=size_t1;
for(int i = 0; i < size_t1; i++){
a[i]=t1[i];
}
}
else{
size_a=size_t2;
for(int i = 0; i < size_t2; i++){
a[i]=t2[i];
}
}
}
while(size_b!=1){
size_t1 = 0;
size_t2 = 0;
for(int i = 0; i < size_b; i++){
if(i%2==0){
t1[size_t1++]=b[i];
}
else{
t2[size_t2++]=b[i];
}
}
if(query(size_a,size_t1,a,t1)){
size_b=size_t1;
for(int i = 0; i < size_t1; i++){
b[i]=t1[i];
}
}
else{
size_b=size_t2;
for(int i = 0; i < size_t2; i++){
b[i]=t2[i];
}
}
}
setRoad(a[0],b[0]);
a[0]=find(a[0]);
b[0]=find(b[0]);
int val;
if(aux[a[0]].size()>aux[b[0]].size()){
for(int i = 0; i < aux[b[0]].size(); i++){
aux[a[0]].push_back(aux[b[0]][i]);
}
aux[b[0]].clear();
val = b[0];
}
else{
for(int i = 0; i < aux[a[0]].size(); i++){
aux[b[0]].push_back(aux[a[0]][i]);
}
aux[a[0]].clear();
val = a[0];
}
vector<int>total2;
for(int i = 0; i < total.size(); i++){
if(total[i]!=val)total2.push_back(total[i]);
}
total.clear();
for(int i = 0; i < total2.size(); i++){
total.push_back(total2[i]);
}
}
}
Compilation message
icc.cpp: In function 'void run(int)':
icc.cpp:43:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0; j < aux[total[i]].size(); j++){
^
icc.cpp:48:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int j = 0; j < aux[total[i]].size(); j++){
^
icc.cpp:109:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < aux[b[0]].size(); i++){
^
icc.cpp:116:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < aux[a[0]].size(); i++){
^
icc.cpp:123:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < total.size(); i++){
^
icc.cpp:127:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = 0; i < total2.size(); i++){
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
2084 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
2088 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
2088 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
2088 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
2088 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
2088 KB |
The query sets must be disjoint |
2 |
Halted |
0 ms |
0 KB |
- |