Educational Codeforces Round 90 (Rated for Div. 2)
18956 ワード
A. Donut Shops
ACコード:
B. 01 Game
ACコード:
C. Pluses and Minuses
ACコード:
D. Maximum Sum on Even Positions
ACコード:
ACコード:
int n, m, k;
int ans1, ans2;
int main()
{
int t;
sd(t);
while (t--)
{
ll a, b, c;
slddd(a, b, c);
if (a >= c)
ans1 = -1;
else
ans1 = 1;
if (a * b <= c)
ans2 = -1;
else
ans2 = b;
pdd(ans1, ans2);
}
return 0;
}
B. 01 Game
ACコード:
const int N = 5e6 + 50;
int n, m, k;
int main()
{
int t;
sd(t);
while (t--)
{
string s;
cin >> s;
int len = s.size();
int one = 0, zero = 0;
rep(i, 0, len - 1)
{
if (s[i] == '0')
zero++;
else
one++;
}
int minn = min(one, zero);
if (minn & 1)
puts("DA");
else
puts("NET");
}
return 0;
}
C. Pluses and Minuses
ACコード:
const int N = 1e6 + 50;
int n, m, k;
int a[N];
int main()
{
int t;
sd(t);
while (t--)
{
string s;
cin >> s;
int len = s.size();
a[0] = 0;
rep(i, 0, len - 1)
{
if (s[i] == '+')
a[i + 1] = a[i] + 1;
else
a[i + 1] = a[i] - 1;
}
ll ans = 0, cnt = 0;
rep(i, 1, len)
{
while (cnt + a[i] < 0)
{
cnt++;
ans += i;
}
}
ans += len;
pld(ans);
}
return 0;
}
D. Maximum Sum on Even Positions
ACコード:
const int N = 1e6 + 50;
int n, m, k;
int a[N];
int main()
{
int t;
sd(t);
while (t--)
{
sd(n);
ll ans = 0;
rep(i, 1, n)
{
sd(a[i]);
if (i % 2 == 1)
ans += a[i];
}
ll sum1 = 0;
ll ans1 = 0;
for (int i = 1; i < n; i += 2)
{
int val = a[i + 1] - a[i];
sum1 += val;
sum1 = max(0LL, sum1);
ans1 = max(ans1, sum1);
}
ll sum2 = 0;
ll ans2 = 0;
for (int i = 2; i < n; i += 2)
{
int val = a[i] - a[i + 1];
sum2 += val;
sum2 = max(0LL, sum2);
ans2 = max(ans2, sum2);
}
ans1 = max(ans1, ans2);
pld(ans + ans1);
}
return 0;
}