Submission #39576

# Submission time Handle Problem Language Result Execution time Memory
39576 2018-01-16T15:46:23 Z igzi ICC (CEOI16_icc) C++14
0 / 100
0 ms 2084 KB
#include <bits/stdc++.h>
#include "icc.h"
#define maxN 101
 
using namespace std;
vector <int> v[maxN];
vector <int> x,a,b;
int N,p[maxN];
 
int Query(vector<int> &a, vector<int> &b) {
  int tmp[2][maxN];
  for (int i = 0; i < a.size(); ++i) tmp[0][i] = a[i];
  for (int i = 0; i < b.size(); ++i) tmp[1][i] = b[i];
  return query(a.size(), b.size(), tmp[0], tmp[1]);
}
void formiraj(int n,int d){
    a.clear(); b.clear();
    for(int i=0;i<n;i++){
        int r=i/d;
        if(r%2) b.push_back(x[i]);
        else a.push_back(x[i]);
    }
}
pair <int,int> resi(vector <int> &a,vector <int> &b){
    pair <int,int> ans;
    ans=make_pair(-1,-1);
    int i;
    vector <int> s;
    int A,B;
    A=a.size();
    B=b.size();
    int l=0,d=A-1,m;
    while(d>l){
        m=(l+d)/2;
        for(i=l;i<=m;i++){
            s.push_back(a[i]);
        }
        if(Query(b,s)) d=m;
        else l=m+1;
        s.clear();
    }
    ans.first=a[l];
    l=0,d=B-1;
    while(d>l){
        m=(l+d)/2;
        for(i=l;i<=m;i++){
            s.push_back(b[i]);
        }
        if(Query(a,s)) d=m;
        else l=m+1;
        s.clear();
    }
    ans.second=b[l];
    return ans;
}
void spoj(int a,int b){
    int i;
    if(a>b) swap(a,b);
    for(i=0;i<v[b].size();i++){
        v[a].push_back(v[b][i]);
        p[v[b][i]]=a;
    }
    v[b].clear();
}
 
void run(int n){
    N=n;
    int i,A=0,B=0,s;
    vector <int> a,b;
    for(i=1;i<=N;i++){
        v[i].push_back(i);
        p[i]=i;
    }
    while(n>1){
        s=n & -n;
        if(s==n) s/=2;
        for(i=1;i<=N;i++){
            if(!v[i].empty()) x.push_back(i);
        }
        for(i=0;i<s;i++){
            if(x[i]>=1 && x[i]<=N) a.push_back(x[i]);
        }
        for(i=s;i<x.size();i++){
            if(x[i]>=1 && x[i]<=N) b.push_back(x[i]);
        }
        int d=s;
        while(d>0){
        formiraj(x.size(),d);
        if(Query(a,b)) break;
        a.clear(); b.clear();
        d=d/2;
        }
        pair <int,int> r;
        r=make_pair(1,1);
        A=a.size();
        for(i=0;i<A;i++){
            for(int j=0;j<v[a[i]].size();j++){
                if(v[a[i]][j]!=a[i]) a.push_back(v[a[i]][j]);
            }
        }
        B=b.size();
        for(i=0;i<B;i++){
            for(int j=0;j<v[b[i]].size();j++){
                if(v[b[i]][j]!=b[i]) b.push_back(v[b[i]][j]);
            }
        }
        r=resi(a,b);
        a.clear(); b.clear();
        setRoad(r.first,r.second);
        spoj(p[r.first],p[r.second]);
        n--;
    }
}

Compilation message

icc.cpp: In function 'int Query(std::vector<int>&, std::vector<int>&)':
icc.cpp:12:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < a.size(); ++i) tmp[0][i] = a[i];
                     ^
icc.cpp:13:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < b.size(); ++i) tmp[1][i] = b[i];
                     ^
icc.cpp: In function 'void spoj(int, int)':
icc.cpp:59:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(i=0;i<v[b].size();i++){
              ^
icc.cpp: In function 'void run(int)':
icc.cpp:83:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(i=s;i<x.size();i++){
                  ^
icc.cpp:97:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int j=0;j<v[a[i]].size();j++){
                          ^
icc.cpp:103:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int j=0;j<v[b[i]].size();j++){
                          ^
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2080 KB Wrong road!
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2076 KB Wrong road!
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2080 KB Wrong road!
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2084 KB Wrong road!
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2080 KB Wrong road!
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 2084 KB Wrong road!
2 Halted 0 ms 0 KB -