제출 #340444

#제출 시각아이디문제언어결과실행 시간메모리
340444A_DSlagalica (COCI19_slagalica2)C++14
20 / 70
1100 ms14952 KiB
/* ID: antwand1 TASK: barn1 LANG: C++ */ #include <bits/stdc++.h> #define ll long long #define int long long #define du long double #define F first #define S second using namespace std; deque<int> v[10]; vector<int> vec; int n; bool bc(int i,int u) { if(i==n){ if(u%2)u=8; else u=7; if(v[u].size()){ vec.push_back(v[u][0]); return 1; } else return 0; } bool ret=0; int r=1; if(u%2)r=3; if(v[r].empty()&&v[r+1].empty())return 0; if(v[r].empty()){ int q=v[r+1].front(); v[r+1].pop_front(); ret=bc(i+1,0); v[r+1].push_front(q); if(ret)vec.push_back(q); return ret; } else if(v[r+1].empty()){ int q=v[r].front(); v[r].pop_front(); ret=bc(i+1,1); v[r].push_front(q); if(ret)vec.push_back(q); return ret; } else{ if(v[r][0]<v[r+1][0]){ int q=v[r].front(); v[r].pop_front(); ret=bc(i+1,1); v[r].push_front(q); if(ret)vec.push_back(q); if(ret)return ret; q=v[r+1].front(); v[r+1].pop_front(); ret=bc(i+1,0); v[r+1].push_front(q); if(ret)vec.push_back(q); return ret; } else{ int q=v[r+1].front(); v[r+1].pop_front(); ret=bc(i+1,0); v[r+1].push_front(q); if(ret)vec.push_back(q); if(ret)return ret; q=v[r].front(); v[r].pop_front(); ret=bc(i+1,1); v[r].push_front(q); if(ret)vec.push_back(q); return ret; } } } main() { //freopen("barn1.in","r",stdin);freopen("barn1.out","w",stdout); cin>>n; for(int i=1;i<=n;i++){ int x,a; cin>>x>>a; v[x].push_back(a); } for(int i=1;i<=8;i++)sort(v[i].begin(),v[i].end()); if(v[5].empty()==0){ if(bc(2,1)){ vec.push_back(v[5][0]); reverse(vec.begin(),vec.end()); for(int i=0;i<n;i++){ cout<<vec[i]<<" "; } cout<<endl; } else cout<<-1<<endl; } else if(v[6].empty()==0){ if(bc(2,0)){ vec.push_back(v[6][0]); reverse(vec.begin(),vec.end()); for(int i=0;i<n;i++){ cout<<vec[i]<<" "; } cout<<endl; } else cout<<-1<<endl; } else cout<<-1<<endl; } /* bool bc(int i,int a) { if(i==n){ if(a==0){ if(v[7].empty()==0){ s+=v[7].front()+'0'; return 1; } else return 0; } else{ if(v[8].empty()==0){ s+=v[8].front()+'0'; return 1; } else return 0; } } bool ret=0; if(a==0){ if(v[1].empty()&&v[2].empty())return 0; if(v[1].empty()){ int q=v[2][0]; v[2].pop_front(); ret=bc(i+1,0); v[2].push_front(q); if(ret)s+=q+'0'; return ret; } else{ if(v[2].empty()){ int q=v[1][0]; v[1].pop_front(); ret=bc(i+1,1); v[1].push_front(q); if(ret)s+=q+'0'; return ret; } else{ if(v[1][0]<v[2][0]){ int q=v[1][0]; v[1].pop_front(); ret=bc(i+1,1); v[1].push_front(q); if(ret)s+=q+'0'; if(ret)return ret; q=v[2][0]; v[2].pop_front(); ret=bc(i+1,0); v[2].push_front(q); if(ret)s+=q+'0'; return ret; } else{ int q=v[2][0]; v[2].pop_front(); ret=bc(i+1,0); v[2].push_front(q); if(ret)s+=q+'0'; if(ret)return ret; q=v[1][0]; v[1].pop_front(); ret=bc(i+1,1); v[1].push_front(q); if(ret)s+=q+'0'; return ret; } } } } else{ if(v[3].empty()&&v[4].empty())return 0; if(v[3].empty()){ int q=v[4][0]; v[4].pop_front(); ret=bc(i+1,0); v[4].push_front(q); if(ret)s+=q+'0'; return ret; } else{ if(v[3].empty()){ int q=v[3][0]; v[3].pop_front(); ret=bc(i+1,1); v[3].push_front(q); if(ret)s+=q+'0'; return ret; } else{ if(v[3][0]<v[4][0]){ int q=v[1][0]; v[3].pop_front(); ret=bc(i+1,1); v[3].push_front(q); if(ret)s+=q+'0'; if(ret)return ret; q=v[4][0]; v[4].pop_front(); ret=bc(i+1,0); v[4].push_front(q); if(ret)s+=q+'0'; return ret; } else{ int q=v[4][0]; v[4].pop_front(); ret=bc(i+1,0); v[4].push_front(q); if(ret)s+=q+'0'; if(ret)return ret; q=v[3][0]; v[3].pop_front(); ret=bc(i+1,1); v[3].push_front(q); if(ret)s+=q+'0'; return ret; } } } } } */

컴파일 시 표준 에러 (stderr) 메시지

slagalica.cpp:78:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   78 | main()
      |      ^
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...