Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
148958 吴宗桦 合并石子1 C++ 编译错误 0 0 MS 0 KB 1574 2024-05-25 15:21:51

Tests(0/0):


#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; }


测评信息: