제출 #278710

#제출 시각아이디문제언어결과실행 시간메모리
278710doowey자동 인형 (IOI18_doll)C++14
37 / 100
185 ms12712 KiB
#include <bits/stdc++.h>
#include "doll.h"

using namespace std;

typedef long long ll;
typedef pair<int,int> pii;

#define fi first
#define se second
#define mp make_pair

int id = 0;
vector<int> X, Y;
int getid(vector<int> A){
    id -- ;
    int cur = id;
    if(A.size() % 2 == 0){
        bool valid = true;
        for(int i = 0 ; i < A.size(); i ++ ){
            if(A[i] != A[0])  valid = false;
        }
        if(valid){
            X.push_back(A[0]);
            Y.push_back(A[0]);
            return cur;
        }
    }
    if(A.size() == 1){
        X.push_back(A[0]);
        Y.push_back(cur);
        return cur;
    }
    else if(A.size() == 2){
        X.push_back(A[0]);
        Y.push_back(A[1]);
        return cur;
    }
    else{
        vector<int> P, Q;
        for(int i = 0 ; i < A.size(); i ++ ){
            if(i % 2 == 0) P.push_back(A[i]);
            else Q.push_back(A[i]);
        }
        int now = X.size();
        X.push_back(0);
        Y.push_back(0);
        int lef = getid(P);
        int rig = getid(Q);
        X[now] = lef;
        Y[now] = rig;
        return cur;
    }
}

void create_circuit(int M, vector<int> A) {
    vector<int> C;
    int lg = 0;
    int n = A.size();
    while((1 << lg) - 1 < A.size())
        lg ++ ;
    while(A.size() < (1 << lg) - 1){
        A.push_back(-1);
    }
    A.push_back(0);
    C.push_back(getid(A));
    for(int i = 1; i <= M; i ++ )
        C.push_back(-1);
    answer(C,X,Y);
}

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

doll.cpp: In function 'int getid(std::vector<int>)':
doll.cpp:20:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |         for(int i = 0 ; i < A.size(); i ++ ){
      |                         ~~^~~~~~~~~~
doll.cpp:41:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |         for(int i = 0 ; i < A.size(); i ++ ){
      |                         ~~^~~~~~~~~~
doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:60:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   60 |     while((1 << lg) - 1 < A.size())
      |           ~~~~~~~~~~~~~~^~~~~~~~~~
doll.cpp:62:20: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   62 |     while(A.size() < (1 << lg) - 1){
      |           ~~~~~~~~~^~~~~~~~~~~~~~~
doll.cpp:59:9: warning: unused variable 'n' [-Wunused-variable]
   59 |     int n = A.size();
      |         ^
#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...