はい。
AtCoder Beginner Contest 024
のどがまだちょっと??
A - 動物園
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int a,b,c,k,s,t,n,m,x,y,cnt=0,ans=0;
cin >> a >> b >> c >> k;
cin >> s >> t;
ans=a*s+b*t;
if(s+t>=k) ans-=(s+t)*c;
print(ans);
return 0;
}
とりあえず合計額出して人数が割引対象ならそれも計算する。
B - 自動ドア
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int n,t,m,x,y,cnt=0,ans=0;
cin >> n >> t;
vector<int> a(2e6,0);
rep(i,n) {
cin >> x;
a.at(x)++;
a.at(x+t+0)--;
}
rep(i,2e6) {
cnt+=a.at(i);
ans+=(cnt>0);
}
print(ans);
return 0;
}
開く閉じるタイミングにフラグ立てて、最後に先頭から見てフラグ立ってる区間を数えてよしなに。
C - 民族大移動
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define per(i,n) for(int i=n-1;i>=0;--i)
#define sc1(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d %d",&a,&b)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
#define sl1(a) scanf("%lld",&a)
#define sl2(a,b) scanf("%lld %lld",&a,&b)
#define sl3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c)
#define PI 3.1415926535897932
#define ll long long
#define print(a) cout << a << endl
int souwa(int a) {return (1+a)*a/2;}
int lcm(int a,int b) { return a*b/__gcd(a,b); }
bool sankaku(int a,int b,int c) {vector <int> t={a,b,c};sort(t.begin(),t.end()); return t.at(0)+t.at(1)>t.at(2);};
int main(){
int mod=1000000007;
int n,d,k,m,x,y,cnt=0,ans=0;
cin >> n >> d >> k;
vector<pair<int,int>> p(d,{0,0});
rep(i,d) cin >> p.at(i).first >> p.at(i).second;
rep(i,k) {
cin >> x >> y;
rep(j,d) {
if(p.at(j).first<=x && x<=p.at(j).second) {
if(p.at(j).first<=y && y<=p.at(j).second) {
cout << j+1 << endl;
break;
} else if (x<y) {
x=p.at(j).second;
} else {
x=p.at(j).first;
}
}
}
}
return 0;
}
移動できるときはめいっぱいゴール寄りに移動。一旦少し手前にしておいた方があとでより沢山移動できるというケースが絶対にないです。移動できるときはめいっぱいゴール寄りに。