Submission #1094468

# Submission time Handle Problem Language Result Execution time Memory
1094468 2024-09-29T16:36:21 Z Math4Life2020 Mechanical Doll (IOI18_doll) C++17
0 / 100
1 ms 348 KB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
using pii = pair<int,int>;
const int INF = 1e9;

int v2(int x) {
	return __builtin_ctz(x);
}

int l2(int x) {
	return (31-__builtin_clz(x));
}

void create_circuit(int M, vector<int> A) {
	int N = A.size();
	vector<int> C;
	C.push_back(A[0]);
	for (int i=0;i<M;i++) {
		C.push_back(-1);
	}
	vector<int> X,Y;
	int CIND = 0;
	int D = l2(2*N-1);
	stack<pii> bd;
	bd.push({N,D});
	while (!bd.empty()) {
		pii p0 = bd.top(); bd.pop();
		int k = p0.first; int d = p0.second;
		if (d==1) {
			if (k==1) {
				X.push_back(0);
				Y.push_back(-INF);
			} else if (k==2) {
				X.push_back(-INF);
				Y.push_back(-INF);
			} else {
				cout << "reporting error #1\n";
			}
		} else {
			if (k>(1<<(d-1))) {
				Y.push_back(CIND+1);
				X.push_back(CIND+(1<<(d-1)));
				bd.push({(1<<(d-1)),d-1});
				bd.push({k-(1<<(d-1)),d-1});
			} else {
				X.push_back(0);
				Y.push_back(CIND+1);
				bd.push({k,d-1});
			}
		}
		CIND++;
	}
	bool st[X.size()];
	for (int t=0;t<N;t++) {
		st[t]=0;
	}
	for (int t=0;t<N;t++) {
		int cx = 0;
		int locp = -1;
		bool stp = 0;
		while (cx >= 0) {
			if (st[cx]==0) {
				st[cx]=1;
				locp = cx;
				stp = 0;
				cx = X[cx];
			} else {
				st[cx]=0;
				locp = cx;
				stp = 1;
				cx = Y[cx];
			}
		}
		if (cx != -INF) {
			cout << "invalid value\n";
		} else {
			int nval;
			if (t<(N-1)) {
				nval = A[t+1];
			} else {
				nval = 0;
			}
			nval++;
			if (stp==0) {
				X[locp]=-INF+1+nval;
			} else {
				Y[locp]=-INF+1+nval;
			}
		}
	}
    for (int d=0;d<X.size();d++) {
		if (X[d]>=0) {
			cout << "x0="<<X[d]<<"\n";
			X[d]=-1-X[d];
			cout << "xf="<<X[d]<<"\n";
			cout << "f1\n";
		} else {
			X[d]=(-INF+1)-X[d];
		}
		if (Y[d]>=0) {
			Y[d]=-1-Y[d];
		} else {
			Y[d]=(-INF+1)-Y[d];
		}
	}
	/*cout << "print C:\n";
	for (int c: C) {
		cout << c <<" ";
	}
	cout << "\nprint X: \n";
	for (int x: X) {
		cout << x << " ";
	}
	cout << "\nprint Y: \n";
	for (int y: Y) {
		cout << y << " ";
	}
	cout << "\n";*/
	answer(C,X,Y);
}

/*int main() {
	create_circuit(4,{1,2,1,3});
}*/

Compilation message

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:92:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |     for (int d=0;d<X.size();d++) {
      |                  ~^~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 344 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 344 KB DO NOT PRINT ANYTHING TO STANDARD OUTPUT
2 Halted 0 ms 0 KB -