Submission #297799

#TimeUsernameProblemLanguageResultExecution timeMemory
297799DanerZeinMechanical Doll (IOI18_doll)C++14
6 / 100
505 ms16812 KiB
#include "doll.h" #include <bits/stdc++.h> #define MAX 1000000000 using namespace std; typedef vector<int> vi; vector<vi> swi; int usd[100010]; void create_circuit(int M, std::vector<int> A) { map<int,int> m; for(int i=0;i<A.size();i++){ // cout<<A[i]<<" "; m[A[i]]++; } //cout<<endl; int siz=0; for(int i=1;i<=M;i++){ if(m[i]==2) siz++; if(m[i]==3 or m[i]==4) siz+=3; } vector<int>C,X,Y; swi.resize(M+1); C.resize(M+1); X.assign(siz+1,-MAX); Y.assign(siz+1,-MAX); int sw=-1; for(int i=1;i<=M;i++){ //cout<<i<<" "<<m[i]<<endl; if(m[i]==2){ swi[i].push_back(sw); sw--; } if(m[i]==3 or m[i]==4){ swi[i].push_back(sw); sw--; swi[i].push_back(sw); sw--; swi[i].push_back(sw); sw--; } } for(int i=1;i<=M;i++){ if(swi[i].size()==3){ int si=swi[i][0],s2=swi[i][2]; X[abs(si)]=swi[i][1]; Y[abs(si)]=swi[i][2]; if(m[i]==3){ X[abs(s2)]=si; } } } A.push_back(MAX); C[0]=A[0]; memset(usd,0,sizeof usd); for(int i=0;i<A.size()-1;i++){ usd[A[i]]++; if(m[A[i]]==1){ C[A[i]]=A[i+1]; } if(m[A[i]]==2){ int si=swi[A[i]][0]; C[A[i]]=si;; if(X[abs(si)]==-MAX){ X[abs(si)]=A[i+1]; } else{ Y[abs(si)]=A[i+1]; } } if(m[A[i]]==4 or m[A[i]]==3){ int si=swi[A[i]][0],s1=swi[A[i]][1],s2=swi[A[i]][2]; C[A[i]]=si; if(m[A[i]]==4){ if(usd[A[i]]%2!=0){ if(X[abs(s1)]==-MAX) X[abs(s1)]=A[i+1]; else Y[abs(s1)]=A[i+1]; } else{ if(X[abs(s2)]==-MAX){ X[abs(s2)]=A[i+1]; } else Y[abs(s2)]=A[i+1]; } } else{ if(usd[A[i]]<=1){ if(X[abs(s1)]==-MAX) X[abs(s1)]=A[i+1]; else Y[abs(s1)]=A[i+1]; } else{ Y[abs(s2)]=A[i+1]; } } } } bool c0=0; for(int i=1;i<=M;i++){ if(C[i]==MAX){ c0=1; C[i]=0; break; } } for(int i=0;i<X.size();i++){ if(c0==1) break; if(X[i]==MAX){ c0=1; X[i]=0; } if(Y[i]==MAX){ c0=1; Y[i]=0; } } vector<int>XX,YY; for(int i=1;i<X.size();i++) XX.push_back(X[i]); for(int i=1;i<Y.size();i++) YY.push_back(Y[i]); /* for(int i=0;i<C.size();i++){ cout<<C[i]<<" "; } cout<<endl; for(int j=0;j<XX.size();j++){ cout<<XX[j]<<" "<<YY[j]<<endl; }*/ answer(C, XX, YY); }

Compilation message (stderr)

doll.cpp: In function 'void create_circuit(int, std::vector<int>)':
doll.cpp:10:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |   for(int i=0;i<A.size();i++){
      |               ~^~~~~~~~~
doll.cpp:54:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |   for(int i=0;i<A.size()-1;i++){
      |               ~^~~~~~~~~~~
doll.cpp:103:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  103 |   for(int i=0;i<X.size();i++){
      |               ~^~~~~~~~~
doll.cpp:115:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  115 |   for(int i=1;i<X.size();i++) XX.push_back(X[i]);
      |               ~^~~~~~~~~
doll.cpp:116:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  116 |   for(int i=1;i<Y.size();i++) YY.push_back(Y[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...