Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
148958 | 吴宗桦 | 合并石子1 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 1574 | 2024-05-25 15:21:51 |
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; #define maxn 50010; #define inf 0x3f3f3f3f; const int mod=100003; void read(int &x){ int f=1;x=0; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();} x*=f; } int n,w; long long ans=0; vector<int> l; int solu(){ int k=l.size()-2,q=-1; for(int i=0;i<l.size()-2;++i) if (l[i]<=l[i+2]) {k=i;break;} int t=l[k]+l[k+1]; l.erase(l.begin()+k);l.erase(l.begin()+k); for(int i=k-1;i>=0;--i) if (l[i]>t) {q=i; break;} l.insert(l.begin()+q+1,t); return t; } int main(){ read(n); for(int i=1;i<=n;++i) read(w),l.push_back(w); for(int i=0;i<n-1;i++) ans+=solu(); printf("%lld",ans); return 0; } using namespace std; typedef long long ll; typedef unsigned long long ull; typedef double db; define maxn 50010; define inf 0x3f3f3f3f; const int mod=100003; void read(int &x){ int f=1;x=0; char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();} while(ch>='0'&&ch<='9') {x=x10+ch-'0';ch=getchar();} x=f; } int n,w; long long ans=0; vector l; int solu(){ int k=l.size()-2,q=-1; for(int i=0;i<l.size()-2;++i) if (l[i]<=l[i+2]) {k=i;break;} int t=l[k]+l[k+1]; l.erase(l.begin()+k);l.erase(l.begin()+k); for(int i=k-1;i>=0;--i) if (l[i]>t) {q=i; break;} l.insert(l.begin()+q+1,t); return t; } int main(){ read(n); for(int i=1;i<=n;++i) read(w),l.push_back(w); for(int i=0;i<n-1;i++) ans+=solu(); printf("%lld",ans); return 0; }