Submission #815790

#TimeUsernameProblemLanguageResultExecution timeMemory
815790LoboMechanical Doll (IOI18_doll)C++17
100 / 100
54 ms16820 KiB
#include "doll.h" #include<bits/stdc++.h> using namespace std; #define fr first #define sc second #define mp make_pair #define pb push_back #define all(x) x.begin(),x.end() #define int long long const int inf = 1e18+10; const int maxn = 2e5+10; int n, m; vector<int> g[maxn]; void create_circuit(int32_t M, std::vector<int32_t> A) { // int N = A.size(); // std::vector<int> C(M + 1); // C[0] = -1; // for (int i = 1; i <= M; ++i) { // C[i] = 1; // } // std::vector<int> X(N), Y(N); // for (int k = 0; k < N; ++k) { // X[k] = Y[k] = A[k]; // } // answer(C, X, Y); n = A.size(); m = M; vector<int32_t> c(m+1),x,y; vector<int> next; for(int i = -1; i < n; i++) { int u,v; if(i == -1) u = 0, v = A[0]; else if(i == n-1) u = A[n-1], v = 0; else u = A[i], v = A[i+1]; // g[u].pb(v); next.pb(v); } int cnt = 1; vector<int> liga; int mult = 1; while(next.size() > 1) { vector<int> newnext; for(int i = 0; i < next.size()/2; i++) { newnext.pb(cnt); x.pb(mult*next[i]); y.pb(mult*next[i+next.size()/2]); cnt++; } if(next.size()%2 == 1) { newnext.pb(cnt); y.pb(mult*next.back()); x.pb(0); liga.pb(cnt); cnt++; } mult = -1; next = newnext; } for(auto v : liga) { x[v-1] = -next[0]; } for(int i = 0; i <= m; i++) { c[i] = -next[0]; } // int cnt = 1; // for(int i = 0; i <= m; i++) { // if(g[i].size() == 0) { // c[i] = i; // continue; // } // if(g[i].size() == 1) { // c[i] = g[i][0]; // continue; // } // vector<int> next = g[i]; // vector<int> liga; // int mult = 1; // while(next.size() > 1) { // vector<int> newnext; // for(int i = 0; i < next.size()/2; i++) { // newnext.pb(cnt); // x.pb(mult*next[i]); // y.pb(mult*next[i+next.size()/2]); // cnt++; // } // if(next.size()%2 == 1) { // newnext.pb(cnt); // y.pb(mult*next.back()); // x.pb(0); // liga.pb(cnt); // cnt++; // } // mult = -1; // next = newnext; // } // for(auto v : liga) { // x[v-1] = -next[0]; // } // c[i] = -next[0]; // // cout << i << " " << c[i] << " " << cnt << endl; // } // for(int i = 0; i <= m; i++) { // cout << i << " -> " << c[i] << endl; // } // for(int i = 0; i < x.size(); i++) { // cout << -(i+1) << " -> " << x[i] << " " << y[i] << endl; // } answer(c,x,y); }

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int32_t, std::vector<int>)':
doll.cpp:34:7: warning: variable 'u' set but not used [-Wunused-but-set-variable]
   34 |   int u,v;
      |       ^
doll.cpp:49:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |   for(int i = 0; i < next.size()/2; 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...