记录编号 | 418118 | 评测结果 | AA | ||
---|---|---|---|---|---|
题目名称 | [UVa 101] 木块问题 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.000 s | ||
提交时间 | 2017-06-29 10:31:53 | 内存使用 | 0.00 MiB | ||
#include<bits/stdc++.h> using namespace std; const int maxn=30; int n; vector<int> pile[maxn]; void find_block(int a,int& p,int& h){ for(p=0;p<n;p++) for(h=0;h<pile[p].size();h++) if(pile[p][h]==a)return; } void clear_above(int p,int h){ for(int i=h+1;i<pile[p].size();i++){ int b=pile[p][i]; pile[b].push_back(b); } pile[p].resize(h+1); } void pile_onto(int p,int h,int p2){ for(int i=h;i<pile[p].size();i++) pile[p2].push_back(pile[p][i]); pile[p].resize(h); } void print(){ for(int i=0;i<n;i++){ printf("%d:",i); for(int j=0;j<pile[i].size();j++)printf(" %d",pile[i][j]); printf("\n"); } } int Main(){ freopen("uvablock.in","r",stdin); freopen("uvablock.out","w",stdout); int a,b; scanf("%d",&n); string s1,s2; for(int i=0;i<n;i++)pile[i].push_back(i); while(cin>>s1>>a>>s2>>b){ int pa,pb,ha,hb; find_block(a,pa,ha); find_block(b,pb,hb); if(pa==pb)continue; if(s2=="onto")clear_above(pb,hb); if(s1=="move")clear_above(pa,ha); pile_onto(pa,ha,pb); } print(); } int main(){;} int Avc=Main(); //Copyright @ 2017-2018 Avicii.All rights reserved.