\(에이\)
뻐꾸기
int a,b,c;
int main(){
scanf("%d%d%d",&a,&b,&c);
if((a&1^1)|(b&1^1)|(c&1^1))return puts("0"),0;
printf("%lld\n",min(1ll*a*b,min(1ll*a*c,1ll*b*c)));
return 0;
}
\(비\)
처음에 잘못 ......
열거 \ (2 \) 동작의 수는 \ (K \) 다음 단조 큐 라인에 최적화
//quming
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
using namespace std;
typedef long long ll;
const int N=5005;const ll inf=1e18;
int a[N],q[N],n,x,k;ll res;
void solve(){
int h=1,t=0;ll sum=0;
fp(i,1,n){
while(h<=t&&a[i]<=a[q[t]])--t;
q[++t]=i;
}
fp(i,n+1,n<<1){
while(h<=t&&i-q[h]>k)++h;
while(h<=t&&a[i]<=a[q[t]])--t;
q[++t]=i,sum+=a[q[h]];
}
cmin(res,sum+1ll*k*x);
}
int main(){
scanf("%d%d",&n,&x);res=inf;
fp(i,1,n)scanf("%d",&a[i]),a[i+n]=a[i];
for(k=0;k<n;++k)solve();
printf("%lld\n",res);
return 0;
}