Submission #173854

#TimeUsernameProblemLanguageResultExecution timeMemory
173854Ruxandra985ICC (CEOI16_icc)C++14
7 / 100
181 ms632 KiB
#include <bits/stdc++.h> #include "icc.h" using namespace std; int f[110] , w[110] , a[110] , b[110] , aib[110]; int query (int p){ int sol = 0; for (int i = p ; i ; i = i - (i & (-i))) sol+= aib[i]; return sol; } void update (int p){ for (int i = p ; i <= 100 ; i = i + (i & (-i))) aib[i]++; } void run (int n){ int i , p , q , bit; for (i=1;i<=n;i++) f[i] = i; for (int mc = 1 ; mc < n ; mc++){ memset ( aib , 0 , sizeof (aib)); /// vreau sa ma duc in jos cat pot pana gasesc intervalul care contine capetele bit = 0; while (true){ /// o sa fac solutia aia mai proasta cu generat random pt ca nuj cum altcumva bit = rand() % 7; bit += query(bit + 1); update(bit + 1); p = q = 0; for (i=1;i<=n;i++){ if (f[i] & (1 << bit)) a[p++] = i; } for (i=1;i<=n;i++){ if ((f[i] & (1 << bit)) == 0) b[q++] = i; } if (query( p , q , a , b ) == 1){ /// un capat de muchie e intr o jumatate , celalalt capat in cealalta break; } else { /// ambele capete sunt in aceeasi jum bit++; continue; } } /// ai vectorii a si b /// a are p elem si b are q /// a si b sunt indexate de la 0 /// pt a while (p > 1){ if (query (p / 2 , q , a , b) == 1) p/=2; else { for (i = p/2 ; i < p ; i++) a[i - p/2] = a[i]; p = p - p / 2; } } /// pt b while (q > 1){ if (query (p , q / 2 , a , b) == 1) q/=2; else { for (i = q/2 ; i < q ; i++) b[i - q/2] = b[i]; q = q - q / 2; } } setRoad(a[0] , b[0]); /// acum trebuie sa modificam f ul int u1 = min( f[a[0]] , f[b[0]] ); int u2 = max( f[a[0]] , f[b[0]] ); for (i=1;i<=n;i++){ if (f[i] == u2) f[i] = u1; else if (f[i] == n - mc + 1 && u2 != n - mc + 1) f[i] = u2; } } }
#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...