Submission #312116

#TimeUsernameProblemLanguageResultExecution timeMemory
312116tengiz05Mechanical Doll (IOI18_doll)C++17
2 / 100
43 ms4652 KiB
#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
void create_circuit(int m, vector<int> a) {
	int n = a.size();
	
	vector<int> c(m + 1, 0);
	vector<int> cnt(m+1);
	vector<int> used(m+1);
	vector<int> X, Y;
	for(int i=0;i<n;i++)cnt[a[i]]++;
	vector<int> ind(m+1);
	int tt = 0;
	for(int i=0;i<=m;i++){
		if(cnt[i] == 2){
			ind[i] = tt;tt++;
			X.push_back(0);
			Y.push_back(0);
		}
	}
	int now = 0;
	int t = -1;
	for(int i=0;i<n;i++){
		if(cnt[now] == 2){
			if(used[now]){
				Y[ind[now]] = a[i];
				now = a[i];
			}else {
				X[ind[now]] = a[i];
				used[now] = 1;
				c[now] = t;
				now = a[i];
				t--;
			}
		}else {
			c[now] = a[i];
			now = a[i];
		}
	}//c[now] = 0;
	for(int i=0;i<X.size();i++){
		if(Y[i] < 0)swap(X[i], Y[i]);
	}
	answer(c, X, Y);
}

/*

4 4
1 1 2 2

*/

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:40:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |  for(int i=0;i<X.size();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...