Submission #707210

#TimeUsernameProblemLanguageResultExecution timeMemory
707210Tuanlinh123ICC (CEOI16_icc)C++17
90 / 100
123 ms500 KiB
#include<bits/stdc++.h> #include "icc.h" #define ll int #define ld long double #define pll pair<ll,ll> #define mp make_pair #define pb push_back #define fi first #define se second using namespace std; ll a[105], pa[105], Rank[105]; ll Find(ll i) { if (pa[i]!=i) pa[i]=Find(pa[i]); return pa[i]; } void Union(ll a, ll b) { ll Pa=Find(a), Pb=Find(b); if (Pa==Pb) return; if (Rank[Pa]<Rank[Pb]) swap(Pa, Pb); if (Rank[Pa]==Rank[Pb]) Rank[Pa]++; pa[Pb]=Pa; } ll ask(vector <ll> a, vector <ll> b) { ll n=a.size(), m=b.size(); ll A[n], B[m]; for (ll i=0; i<a.size(); i++) A[i]=a[i]; for (ll i=0; i<b.size(); i++) B[i]=b[i]; return query(n, m, A, B); } ll random(ll l, ll r) { return l+rand()%(r-l+1); } void run(ll n) { srand(177013); for (ll i=1; i<=n; i++) pa[i]=i, a[i-1]=i; for (ll i=1; i<=n; i++) { ll l=random(0, n-1), r=random(0, n-1); swap(a[l], a[r]); } ll lg=32-__builtin_clz(n); for (ll k=1; k<n; k++) { for (ll i=0; i<lg; i++) { vector <ll> A, B; for (ll j=0; j<n; j++) { ll Pj=Find(a[j]); if (Pj&1<<i) A.pb(a[j]); else B.pb(a[j]); } if (!ask(A, B)) continue; ll loA=0, hiA=A.size()-1; while (hiA>loA) { ll midA=(hiA+loA)/2; vector <ll> Anew(A.begin()+loA, A.begin()+midA+1); if (ask(Anew, B)) hiA=midA; else loA=midA+1; } ll loB=0, hiB=B.size()-1; while (hiB>loB) { ll midB=(hiB+loB)/2; vector <ll> Bnew(B.begin()+loB, B.begin()+midB+1); if (ask(A, Bnew)) hiB=midB; else loB=midB+1; } setRoad(A[loA], B[loB]); Union(A[loA], B[loB]); break; } } }

Compilation message (stderr)

icc.cpp: In function 'int ask(std::vector<int>, std::vector<int>)':
icc.cpp:35:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |     for (ll i=0; i<a.size(); i++)
      |                  ~^~~~~~~~~
icc.cpp:37:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     for (ll i=0; i<b.size(); i++)
      |                  ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...