はい。
https://atcoder.jp/contests/abc115
A - Christmas Eve Eve Eve
print("Christmas" + " Eve"*(25-int(input())))
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc1(a) scanf("%d",&a)
int main(){
int d;
sc1(d);
printf("Christmas");
rep(i,25-d) printf(" Eve");
puts("");
return 0;
}
頑張ってEveを付け足します。
B - Christmas Eve Eve
n=int(input())
p=[]
for i in range(n):
p.append(int(input()))
print(sum(p)-max(p)//2)
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc1(a) scanf("%d",&a)
int main(){
int n,m=0,ans=0;
sc1(n);
rep(i,n){
int p;
sc1(p);
ans+=p;
m=max(m,p);
}
printf("%d\n",ans-(m/2));
return 0;
}
maxで比較し続けると最大値見つけられるのでよしなに。
C - Christmas Eve
n,k=map(int,input().split())
h=[]
for i in range(n):
h.append(int(input()))
h.sort()
ans=h[-1]-h[0]
for i in range(n-k+1):
ans=min(ans,h[i+k-1]-h[i])
print(ans)
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
int main(){
int n,k,ans=1e9+7;
map <int,int> w;
priority_queue<int> lq,rq;
sc2(n,k);
rep(i,n) {
int h;
sc1(h);
if (w[h]==0) rq.push(-h);
w[h]++;
}
int l=0,r=0,s=0;
while(!rq.empty()) {
s+=w[-1*rq.top()];
r=-1*rq.top();
lq.push(-1*r);
rq.pop();
while(s>=k) {
l=-1*lq.top();
if (s>=k) ans=min(ans,r-l);
s-=w[l];
lq.pop();
}
}
printf("%d\n",ans);
return 0;
}
より大きい隣とk個探してよしなに。
D - Christmas
n,x=map(int,input().split())
a,p=[1],[1]
for i in range(n):
a.append(a[i]*2+3)
p.append(p[i]*2+1)
def f(n,x):
if n==0: return 0 if x<=0 else 1
elif x<=1+a[n-1]: return f(n-1,x-1)
else: return p[n-1]+1+f(n-1,x-2-a[n-1])
print(f(n,x))
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
long long a[55],p[55];
long long f (long long N,long long X) {
if (N==0) {
if (X<=0) return 0;
else return 1;
} else if (X<=1 + a[N-1]) {
return f(N-1,X-1);
} else {
return p[N-1] + 1 + f(N-1,X-2-a[N-1]);
}
return 0ll;
}
int main(){
long long n,x;
sl2(n,x);
a[0]=1,p[0]=1;
rep(i,52) {
a[i+1]=a[i]*2+3;
p[i+1]=p[i]*2+1;
}
printf("%lld\n",f(n,x));
return 0;
}
写経なのであとでじっくりコード読み直します。。