Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32598 liuziming 【S】T1 C++ 通过 100 3 MS 284 KB 1329 2024-09-15 15:14:50

Tests(10/10):


#include<bits/stdc++.h> using namespace std; int n,b[200010],atot; struct node{ int num; int cnt; int id; }a[200010]; int getone(int num,int id){ int res=num; stack<int> op; while(res){ if(res==1) op.push(res); else{ if(res&1){ op.push(2); op.push(1); op.push(2); op.push(3); }else{ op.push(2); op.push(3); } }res>>=1; }if(id==1) return op.size(); if(id==2){ while(op.size()){ if(op.top()==1){ cout<<'1'; }else{ if(op.top()==2){ cout<<'+'; }else{ cout<<'c'; } } op.pop(); } } }bool cmp(node a,node b){ return a.id<b.id; }int main(){ //freopen("polaris.in","r",stdin); //freopen("polaris.out","w",stdout); cin>>n; for(int i=1;i<=n;i++){ cin>>b[i]; }int last=0,sum=0; for(int i=n;i>=1;i--){ if(b[i]!=last){ last=b[i]; a[++atot].num=b[i]+sum; sum+=getone(a[atot].num,1); //a[++atot].num=b[i]+sum; a[atot].id=i; }a[atot].cnt++; }sort(a+1,a+atot+1,cmp); for(int i=1;i<=atot;i++){ //cout<<a[i].num<<' '; getone(a[i].num,2); for(int j=2;j<=a[i].cnt;j++){ cout<<'c'; } } }


测评信息: