Submission #140240

#TimeUsernameProblemLanguageResultExecution timeMemory
140240bazsi700Mechanical Doll (IOI18_doll)C++14
0 / 100
2 ms332 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; #define MOD 1000000007 #define ll long long int #define vi vector<int> #define vii vector< vector<int> > #define PI 3.1415926535897932384626433832795 #define INF 9223372036854775807LL #define hashA 1257958787 #define hashB 1539500609 #define endl "\n" bool was[1000005]; vector<pair<int,int> > getorder(int cn) { //cout << "a" << endl; vector<pair<int,int> > ord; ord.push_back({0,0}); cn/=2; while(cn) { int n = ord.size(); //cout << n << endl; for(int i = 0; i < n; i++) { ord.push_back({ord[i].first+cn,0}); } //cout << cn << endl; cn/=2; } for(int i = 0; i < cn; i++) { ord.push_back({ord[i].first,1}); } return ord; } void create_circuit(int m, std::vector<int> A) { //cout << "a" << endl; vector<int> C(m+1,-1); int n = A.size(); int cn = 1; int ends = 1; while(2*ends < n+1) { cn*=2; cn++; ends*= 2; } vector<int> X (cn); vector<int> Y (cn); for(int i = 0; (i+1)*2 < cn; i++) { X[i] = -(i*2+2); Y[i] = -(i*2+3); } int ind = 0; //cout << "a" << endl; vector<pair<int,int> > ord = getorder(ends); //cout << "a" << endl; //cout << ends << " " << ord.size() << endl; for(int i = 0; i < 2*ends; i++) { // cout << ord[i].first << endl; if(ord[i].second == 0) { if(ind < n) { X[ord[i].first+cn/2] = A[ind++]; } else { X[ord[i].first+cn/2] = -1; } } else { if(ind < n) { Y[ord[i].first+cn/2] = A[ind++]; } else { Y[ord[i].first+cn/2] = -1; } } } Y[cn-1] = 0; /*for(int i = 0; i < cn; i++) { cout << X[i] << " " << Y[i] << endl; }*/ answer(C,X,Y); }
#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...