Submission #292596

#TimeUsernameProblemLanguageResultExecution timeMemory
292596FashoMechanical Doll (IOI18_doll)C++14
0 / 100
3 ms2636 KiB
#include <algorithm> #include <iostream> #include <cassert> #include <climits> #include <cstdlib> #include <cstring> #include <iomanip> #include <numeric> #include <cstdio> #include <string> #include <vector> #include <cmath> #include <ctime> #include <queue> #include <stack> #include <map> #include <set> using namespace std; #define NN 100005 #define ll long long int #define fo(i,x,y) for(int i=x;i<=y;i++) #define fs(ar,n) fo(i,1,n) cin>>ar[i] #define sp " " #define fast cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false) #define pb push_back #define ppb pop_back #define fi first #define se second #define ii pair<int,int> #define lli pair<ll,ll> #define fast2 freopen ("in.txt","r",stdin);freopen ("out.txt","w",stdout); #define mod 1000000007 #include "doll.h" using namespace std; ll t,n,m,sum,ar[NN],pw[NN],cnt,ans[NN],ans1[NN],ans2[NN]; vector<int> v[NN],anss,X,Y; bool check(int ind,int depth,int x,int y) { if(x+pw[depth]>=v[y].size()) return 0; return 1; } void build(int ind,int depth,int x,int y) { // cerr<<ind<<sp<<depth<<endl; cnt++; ll xx=cnt; if(check(ind*2,depth+1,x,y)) { ans1[xx]=-(cnt+1); build(ind*2,depth+1,x,y); } else ans1[xx]=v[y][x]; if(check(ind*2,depth+1,x+pw[depth],y)) { ans2[xx]=-(cnt+1); build(ind*2+1,depth+1,x+pw[depth],y); } else ans2[xx]=v[y][x+pw[depth]]; } void create_circuit(int M, std::vector<int> A) { n = A.size(); m=M; std::vector<int> C(M + 1); fo(i,1,n) ar[i]=A[i-1]; ar[0]=0; ar[n+1]=0; pw[0]=1; fo(i,1,62) pw[i]=pw[i-1]*2; fo(i,1,n) v[ar[i]].pb(ar[i+1]); // build(1,0,0,1); // cnt+=v[1].size()-1; // fo(i,1,cnt) // cout<<ans1[i]<<sp<<ans2[i]<<endl; for(int i=0;i<=m;i++) { if(v[i].size()==1) { ans[i]=v[i][0]; continue; } if(v[i].size()==0) { ans[i]=1; continue; } ans[i]=-(cnt+1); build(1,0,0,i); } for(int i=1;i<=cnt;i++) X.pb(ans1[i]),Y.pb(ans2[i]); fo(i,0,m) anss.pb(ans[i]); // fo(i,0,m) // cout<<anss[i]<<sp; // cout<<endl; // fo(i,0,cnt-1) // cout<<X[i]<<sp<<Y[i]<<endl; answer(anss, X, Y); }

Compilation message (stderr)

doll.cpp: In function 'bool check(int, int, int, int)':
doll.cpp:44:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |   if(x+pw[depth]>=v[y].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...