Daiwa Securities Co. Ltd. Programming Contest 2023(AtCoder Beginner Contest 331) - AtCoder
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int M,D,y,m,d;
cin>>M>>D>>y>>m>>d;
d++;
if(d>D)
{
m++;
d=1;
}
if(m>M)
{
m=1;
y++;
}
cout<<y<<" "<<m<<" "<<d;
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int N,S,M,L;
cin>>N>>S>>M>>L;
int ans=1e9;
for(int i=0;i<=N;i++)
{
for(int j=0;j<=N;j++)
{
for(int k=0;k<=N;k++)
{
if(i*6+j*8+k*12>=N) ans=min(ans,i*S+j*M+k*L);
}
}
}
cout<<ans;
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
signed main(){
int n;
cin>>n;
vector<int> number;
vector<int> A(n);
vector<int> sum(n+1);
for(int &x:A)
{
cin>>x;
number.pb(x);
}
sort(number.begin(),number.end());
for(int i=n-1;i>=0;i--) sum[i]=number[i]+sum[i+1];
for(int i=0;i<n;i++)
{
auto pos=upper_bound(number.begin(),number.end(),A[i])-number.begin();
cout<<sum[pos]<<(i+1<n?' ':'\n');
}
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
int n;
const int N=1024;
int dp[N][N];
int f(int x,int y)
{
int res=(x/n)*(y/n)*dp[n][n];
res+=dp[x%n][y%n];
res+=dp[x%n][n]*(y/n);
res+=dp[n][y%n]*(x/n);
return res;
}
signed main(){
int q;
cin>>n>>q;
char P[N][N];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>P[i][j];
dp[i][j]=(P[i][j]=='B')+dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
}
}
while(q--)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
c++;
d++;
cout<<f(c,d)-f(a,d)-f(c,b)+f(a,b)<<endl;
}
}
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
signed main() {
int N, M, L;
cin >> N >> M >> L;
vector<int> a(N), b(M);
for (auto& x : a) cin >> x;
for (auto& x : b) cin >> x;
set<pair<int, int>> bad;
for (int i = 0; i < L; i++) {
int c, d;
cin >> c >> d;
bad.emplace(c - 1, d - 1);
}
vector<int> ord_b(M);
for (int i = 0; i < M; i++) ord_b[i] = i;
sort(begin(ord_b), end(ord_b), [&](int i, int j) { return b[i] > b[j]; });
vector<int> cur(N);
priority_queue<pair<int, int>> Q;
for (int i = 0; i < N; i++) Q.emplace(a[i] + b[ord_b[cur[i]]], i);
while (true) {
auto [cost, i] = Q.top();
int j = cur[i];
Q.pop();
if (bad.count({i, ord_b[j]}) == 0) {
cout << cost << "\n";
break;
}
cur[i]++;
if (cur[i] != M) Q.emplace(a[i] + b[ord_b[cur[i]]], i);
}
}