AtCoder Beginner Contest 050/AtCoder Regular Contest 066

はい。
https://beta.atcoder.jp/contests/abc050

A - Addition and Subtraction Easy

C++14

#include<bits/stdc++.h>
 
using namespace std;
 
int main(){
    int n,m;
    char op[1];
    scanf("%d %c %d",&n,&op,&m);
    printf("%d\n",op[0]=='+'?n+m:n-m);
 
    return 0;
}

足し算引き算するのに標準入出力を頑張る。

B - Contest with Drinks Easy

C++14

#include<bits/stdc++.h>
 
using namespace std;
 
int main(){
    int mod=1000000007;
    int n,m,chk,p,x;
    scanf("%d",&n);
    vector<int> t(n);
    for (auto&e:t) {
        scanf("%d",&e);
    }
    chk = accumulate(t.begin(),t.end(),0);
    scanf("%d",&m);
    for (int i=0;i<m;i++) {
        scanf("%d %d",&p,&x);
        printf("%d\n",chk-(t[p-1]-x));
    }
    return 0;
}

問題文のいいなりになって計算で大丈夫だと思う。。

C - Lining Up

C++14

#include<bits/stdc++.h>
 
using namespace std;
 
int main(){
    int mod=1000000007;
    int n;
    long long ans=0;
    scanf("%d",&n);
 
    vector<int> a(n);
    for (auto&e:a) scanf("%d",&e);
    sort(a.begin(),a.end());
    if (n%2) {
        for (int i=0;i<n;i++) {
            if (i==0 && a[i]==0) {
                ans=1;
            } else if (i==0 && a[i]!=0) {
                ans=0;
                break;
            } else if (i>0 && a[i]==i && a[i-1]==i) {
                ans*=2;
                ans%=mod;
            } else {
                ans=0;
                break;
            }
            i++;
        }
    } else {
        for (int i=1;i<n;i++) {
            if (i==1 && a[1]==1 && a[0]==1) {
                ans=2;
            } else if (i==1 && (a[i]!=1 || a[i-1]!=1)) {
                ans=0;
                break;
            } else if (i>1 && a[i]==i && a[i-1]==i) {
                ans*=2;
                ans%=mod;
            } else {
                ans=0;
                break;
            }
            i++;
        }
    }
    printf("%lld\n",ans);
    return 0;
}

問題読んでサンプル眺めて、問題読んでサンプル眺めて。。。nが奇数だと0,2,2,4,4...で、偶数だと1,1,3,3,5,5...と数が出現することに気づく。ソレに合わせて解が2xになりそうなことに気づいて力技で解決するなどした。。