Submission #788497

#TimeUsernameProblemLanguageResultExecution timeMemory
788497Andrey자동 인형 (IOI18_doll)C++14
53 / 100
109 ms21936 KiB
#include "doll.h"
#include<bits/stdc++.h>
using namespace std;

vector<int> haha[200001];
vector<int> idk(500001);

void create_circuit(int m, vector<int> bruh) {
    vector<int> c(m+1);
    c[0] = bruh[0];
    int n = bruh.size();
    bruh.push_back(0);
    vector<int> x(0);
    vector<int> y(0);
    int br = 1,a,z = 0,b,p,d,e;
    for(int i = 0; i < n; i++) {
        haha[bruh[i]].push_back(bruh[i+1]);
    }
    for(int i = 0; i < 200001; i++) {
        if(haha[i].empty()) {
            continue;
        }
        if(haha[i].size() == 1) {
            c[i] = haha[i][0];
        }
        else {
            c[i] = -br;
            z = 1;
            b = 0;
            while(z < haha[i].size()) {
                z*=2;
                b*=2;
                b++;
            }
            for(int j = 0; j < b; j++) {
                x.push_back(-(br+j*2+1));
                y.push_back(-(br+j*2+2));
            }
            int p = haha[i].size()-z;
            for(int j = 0; j < z; j++) {
                d = br;
                while(d-br < b/2) {
                    if((++idk[d])%2) {
                        d = -x[d-1];
                    }
                    else {
                        d = -y[d-1];
                    }
                }
                if(p >= 0) {
                    e = haha[i][p];
                }
                else {
                    e = -br;
                }
                if((++idk[d])%2) {
                    x[d-1] = e;
                }
                else {
                    y[d-1] = e;
                }
                p++;
            }
            br+=b;
        }
    }
    answer(c,x,y);
}

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:30:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |             while(z < haha[i].size()) {
      |                   ~~^~~~~~~~~~~~~~~~
doll.cpp:15:16: warning: unused variable 'a' [-Wunused-variable]
   15 |     int br = 1,a,z = 0,b,p,d,e;
      |                ^
doll.cpp:15:26: warning: unused variable 'p' [-Wunused-variable]
   15 |     int br = 1,a,z = 0,b,p,d,e;
      |                          ^
#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...