제출 #231073

#제출 시각아이디문제언어결과실행 시간메모리
231073nicolaalexandraICC (CEOI16_icc)C++14
90 / 100
148 ms760 KiB
/// sincer nu inteleg dc sunt asa proasta #include <bits/stdc++.h> #include "icc.h" #define DIM 200 using namespace std; int v[DIM],t[DIM],aux[DIM],a[DIM],b[DIM]; /*int query (int n, int m, int a[], int b[]){ int ans; cout<<n<<" "; for (int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; cout<<m<<" "; for (int i=0;i<m;i++) cout<<b[i]<<" "; cout<<endl; cin>>ans; return ans; } void setRoad (int x, int y){ cout<<x<<" "<<y<<endl; }*/ void run (int n){ int k,k2,el,i,x,y; for (i=1;i<=n;i++) t[i] = i; for (int pas=1;pas<n;pas++){ /// impart componentele conexe in doua multimi for (int bit=0;bit<9;bit++){ k = 0, k2 = 0; for (i=1;i<=n;i++){ int val = t[i]; if (val&(1<<bit)) a[k++] = i; else b[k2++] = i; } if (!k || !k2) continue; if (query(k,k2,a,b)){ /// am gasit cele doua multimi while (k > 1){ int mid = k/2; if (query(mid,k2,a,b)) k = mid; else { for (int i=mid;i<k;i++) a[i-mid] = a[i]; k -= mid; } } x = a[0]; while (k2 > 1){ int mid = k2/2; if (query(k,mid,a,b)) k2 = mid; else { for (int i=mid;i<k2;i++) b[i-mid] = b[i]; k2 -= mid; } } y = b[0]; setRoad(x,y); if (t[x] > t[y]) swap (x,y); for (i=1;i<=n;i++){ if (i != y && t[i] == t[y]) t[i] = t[x]; else { if (t[i] > t[y]) t[i]--; } } t[y] = t[x]; break; } } } }

컴파일 시 표준 에러 (stderr) 메시지

icc.cpp: In function 'void run(int)':
icc.cpp:27:14: warning: unused variable 'el' [-Wunused-variable]
     int k,k2,el,i,x,y;
              ^~
#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...