提出 #65065488


ソースコード 拡げる

#pragma GCC optimize("Ofast","unroll-all-loops","fast-math","no-stack-protector")
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <unordered_map>
#include <unordered_set>

using namespace std;
#define fi first
#define se second
#if 1
void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}
template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '['; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "]";}
void _print() {cerr << endl << flush;}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#define DEBUG(x...) cerr << "*["<<__LINE__<<"]\t"<< #x << " = "; _print(x)
template<class T>
istream& operator>>(istream& is, vector<T>& v) {
	int n; is>>n; v.resize(n);
	for(auto &i:v) is>>i;
	return is;
}
template<class T1,class T2>
istream& operator>>(istream& is, pair<T1,T2>& p) {
	is>>p.fi>>p.se;
	return is;
}
template<class T>
ostream& operator<<(ostream& os, const vector<T>& v) {
	for(const auto &i:v) os<<i<<' ';
	return os;
}
template<class T1,class T2>
ostream& operator<<(ostream& os, const pair<T1,T2>& p) {
	os<<p.fi<<' '<<p.se; return os;
}
#endif
 
#define ll long long
#define mp make_pair
#define pb push_back
#define vi vector<ll>
#define pi pair<int, int>
template<typename T> bool chkmin(T &a, T b){return (b < a) ? a = b, 1 : 0;}
template<typename T> bool chkmax(T &a, T b){return (b > a) ? a = b, 1 : 0;}
const int maxn = 2000005;
char s[maxn];
int a[maxn];
int pref[maxn];
int calc(int x) {
    if (x < 0) return (-x + 1 ) / 2;
    return 0;
};

vector<pair<ll, int> > xs[2];
const int N = maxn;
ll minsum[N];
const ll inf = 1e18;
ll cont[N];
ll sumgt[N], sumpar[N], sumcnt[N];
ll sufcont[N];
ll seg;

int n, k;
ll total_count(int pos, int k) {
    if (seg == 0) return 1ll * k * cont[pos];
    ll ans = sufcont[pos];
    ll end = pos + 1ll * k * seg;
    if (end <= n) ans -= sufcont[end];
    return ans;
}
ll final[maxn];
void solve(int kl, int kr, int nl, int nr) {
    if (kl > kr) return;
    int mid = (kl + kr) / 2;
    ll best = inf, bpos = -1;
    for (int i = nl; i <= nr; i++) {
        ll cur = total_count(i, mid) + minsum[i];
        if (cur < best) {
            best = cur;
            bpos = i;
        }
    }
    final[mid] = best;
    solve(kl, mid - 1, nl, bpos);
    solve(mid + 1, kr, bpos, nr);
}
int main() {
    cin >> n >> k;
    n *= 2;
    scanf("%s", s + 1);
    for (int j = 1; j <= n; j++) {
        if (s[j] == 'A') a[j] = 1;
        else a[j] = -1;
        pref[j] = pref[j - 1] + a[j];
    }
    seg = pref[n];
    for (int j = 0; j < 2; j++) {
        ll total = 0;
        for (int i = 0; i <= n; i++) {
            total += calc(pref[i]);
            xs[j].pb({total, -pref[i]});
        }
        sort(xs[j].begin(), xs[j].end());
        // DEBUG(xs[j]);
        vector<pair<ll, int> > nx;
        int mxj = -1;
        for (auto v : xs[j]) {
            if (-v.se > mxj) {
                nx.pb(mp(v.fi, -v.se));
                mxj = max(mxj, -v.se);
            }
        }
        reverse(pref + 1, pref + n + 1);
        xs[j] = nx;
    }
    // DEBUG(xs[0]);
    // DEBUG(xs[1]);
    for (int i = 0; i < N; i++) minsum[i] = inf;
    for (auto u: xs[0])
        for (auto v : xs[1])
            chkmin(minsum[min(n, v.se + u.se)], u.fi + v.fi);
    for (int i = 1; i <= n; i++)
        if (pref[i] > 0) {
            sumgt[pref[i]] += pref[i], 
            sumpar[pref[i]] += 1;
            sumcnt[pref[i]] += 1;
        }
    for (int i = n; i >= 0; i--) {
        sumgt[i] += sumgt[i + 1];
        sumpar[i] += sumpar[i + 2];
        sumcnt[i] += sumcnt[i + 1];
    }

    for (int i = 0; i <= n; i++) {
        cont[i] = sumgt[i] - 1ll * i * sumcnt[i] + sumpar[i + 1];
        cont[i] /= 2;
    }

    for (int i = n; i >= 0; i--) {
        sufcont[i] = cont[i];
        if (i + seg <= n) sufcont[i] += sufcont[i + seg];
    }

    solve(1, k, 0, n);

    for (int i = 1; i <= k; i++) 
        cout << final[i] << '\n';
        
    return 0;
}

提出情報

提出日時
問題 B - AGC Language
ユーザ newbiedmy
言語 C++ 20 (gcc 12.2)
得点 1100
コード長 4987 Byte
結果 AC
実行時間 647 ms
メモリ 180908 KiB

コンパイルエラー

Main.cpp: In function ‘int main()’:
Main.cpp:114:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  114 |     scanf("%s", s + 1);
      |     ~~~~~^~~~~~~~~~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1100 / 1100
結果
AC × 5
AC × 140
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 04-01.txt, 04-02.txt, 04-03.txt, 05-01.txt, 05-02.txt, 05-03.txt, 05-04.txt, 05-05.txt, 05-06.txt, 05-07.txt, 05-08.txt, 06-01.txt, 06-02.txt, 06-03.txt, 06-04.txt, 06-05.txt, 06-06.txt, 06-07.txt, 06-08.txt, 06-09.txt, 06-10.txt, 06-11.txt, 06-12.txt, 06-13.txt, 06-14.txt, 06-15.txt, 06-16.txt, 06-17.txt, 06-18.txt, 06-19.txt, 06-20.txt, 06-21.txt, 06-22.txt, 07-01.txt, 07-02.txt, 07-03.txt, 07-04.txt, 07-05.txt, 07-06.txt, 07-07.txt, 07-08.txt, 07-09.txt, 07-10.txt, 07-11.txt, 07-12.txt, 07-13.txt, 07-14.txt, 07-15.txt, 07-16.txt, 08-01.txt, 08-02.txt, 08-03.txt, 08-04.txt, 08-05.txt, 08-06.txt, 08-07.txt, 08-08.txt, 08-09.txt, 08-10.txt, 09-01.txt, 09-02.txt, 09-03.txt, 09-04.txt, 09-05.txt, 09-06.txt, 09-07.txt, 09-08.txt, 09-09.txt, 09-10.txt, 10-01.txt, 10-02.txt, 10-03.txt, 10-04.txt, 10-05.txt, 10-06.txt, 11-01.txt, 11-02.txt, 11-03.txt, 11-04.txt, 12-01.txt, 12-02.txt, 12-03.txt, 12-04.txt, 12-05.txt, 12-06.txt, 12-07.txt, 12-08.txt, 12-09.txt, 12-10.txt, 12-11.txt, 12-12.txt, 12-13.txt, 12-14.txt, 12-15.txt, 12-16.txt, sample-01.txt, sample-02.txt, sample-03.txt, sample-04.txt, sample-05.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 7 ms 19180 KiB
01-02.txt AC 7 ms 19484 KiB
01-03.txt AC 20 ms 21636 KiB
01-04.txt AC 20 ms 21680 KiB
01-05.txt AC 20 ms 21516 KiB
01-06.txt AC 20 ms 21836 KiB
01-07.txt AC 20 ms 21636 KiB
01-08.txt AC 20 ms 21716 KiB
01-09.txt AC 20 ms 21520 KiB
01-10.txt AC 20 ms 21828 KiB
02-01.txt AC 20 ms 21716 KiB
02-02.txt AC 20 ms 21676 KiB
02-03.txt AC 20 ms 21544 KiB
02-04.txt AC 21 ms 21548 KiB
02-05.txt AC 305 ms 179492 KiB
02-06.txt AC 340 ms 179660 KiB
02-07.txt AC 264 ms 179560 KiB
02-08.txt AC 273 ms 179572 KiB
02-09.txt AC 282 ms 179472 KiB
02-10.txt AC 284 ms 179460 KiB
02-11.txt AC 285 ms 179468 KiB
02-12.txt AC 297 ms 179544 KiB
02-13.txt AC 310 ms 179448 KiB
02-14.txt AC 325 ms 179412 KiB
02-15.txt AC 310 ms 179560 KiB
02-16.txt AC 284 ms 179744 KiB
02-17.txt AC 295 ms 179764 KiB
02-18.txt AC 303 ms 179796 KiB
02-19.txt AC 309 ms 179420 KiB
02-20.txt AC 339 ms 179684 KiB
02-21.txt AC 351 ms 179584 KiB
02-22.txt AC 392 ms 179836 KiB
02-23.txt AC 548 ms 179608 KiB
02-24.txt AC 623 ms 179592 KiB
02-25.txt AC 645 ms 179780 KiB
03-01.txt AC 585 ms 179480 KiB
03-02.txt AC 281 ms 180648 KiB
03-03.txt AC 351 ms 179512 KiB
03-04.txt AC 326 ms 179440 KiB
03-05.txt AC 284 ms 179540 KiB
04-01.txt AC 375 ms 180660 KiB
04-02.txt AC 371 ms 180680 KiB
04-03.txt AC 368 ms 180656 KiB
05-01.txt AC 299 ms 179636 KiB
05-02.txt AC 312 ms 179628 KiB
05-03.txt AC 316 ms 179476 KiB
05-04.txt AC 306 ms 179448 KiB
05-05.txt AC 299 ms 179452 KiB
05-06.txt AC 258 ms 179464 KiB
05-07.txt AC 298 ms 179516 KiB
05-08.txt AC 309 ms 179576 KiB
06-01.txt AC 318 ms 179492 KiB
06-02.txt AC 321 ms 179656 KiB
06-03.txt AC 319 ms 179564 KiB
06-04.txt AC 292 ms 179724 KiB
06-05.txt AC 275 ms 179972 KiB
06-06.txt AC 274 ms 179732 KiB
06-07.txt AC 268 ms 178496 KiB
06-08.txt AC 293 ms 179564 KiB
06-09.txt AC 318 ms 179544 KiB
06-10.txt AC 316 ms 179544 KiB
06-11.txt AC 300 ms 179656 KiB
06-12.txt AC 314 ms 179412 KiB
06-13.txt AC 315 ms 179560 KiB
06-14.txt AC 295 ms 179544 KiB
06-15.txt AC 298 ms 179556 KiB
06-16.txt AC 298 ms 179640 KiB
06-17.txt AC 294 ms 179468 KiB
06-18.txt AC 298 ms 179452 KiB
06-19.txt AC 292 ms 179524 KiB
06-20.txt AC 273 ms 179472 KiB
06-21.txt AC 255 ms 179540 KiB
06-22.txt AC 256 ms 179476 KiB
07-01.txt AC 409 ms 180652 KiB
07-02.txt AC 320 ms 180404 KiB
07-03.txt AC 343 ms 180316 KiB
07-04.txt AC 389 ms 180680 KiB
07-05.txt AC 242 ms 140152 KiB
07-06.txt AC 241 ms 159984 KiB
07-07.txt AC 257 ms 159656 KiB
07-08.txt AC 214 ms 139748 KiB
07-09.txt AC 226 ms 159784 KiB
07-10.txt AC 258 ms 159528 KiB
07-11.txt AC 204 ms 137548 KiB
07-12.txt AC 220 ms 158228 KiB
07-13.txt AC 251 ms 158176 KiB
07-14.txt AC 136 ms 100168 KiB
07-15.txt AC 187 ms 136788 KiB
07-16.txt AC 215 ms 136800 KiB
08-01.txt AC 606 ms 179648 KiB
08-02.txt AC 603 ms 179696 KiB
08-03.txt AC 627 ms 179728 KiB
08-04.txt AC 259 ms 179564 KiB
08-05.txt AC 255 ms 179544 KiB
08-06.txt AC 647 ms 179628 KiB
08-07.txt AC 266 ms 179468 KiB
08-08.txt AC 633 ms 179564 KiB
08-09.txt AC 256 ms 179456 KiB
08-10.txt AC 258 ms 179492 KiB
09-01.txt AC 20 ms 21780 KiB
09-02.txt AC 20 ms 21632 KiB
09-03.txt AC 20 ms 21648 KiB
09-04.txt AC 20 ms 21512 KiB
09-05.txt AC 21 ms 21828 KiB
09-06.txt AC 20 ms 21708 KiB
09-07.txt AC 20 ms 21636 KiB
09-08.txt AC 20 ms 21636 KiB
09-09.txt AC 20 ms 21632 KiB
09-10.txt AC 20 ms 21680 KiB
10-01.txt AC 322 ms 180352 KiB
10-02.txt AC 273 ms 180020 KiB
10-03.txt AC 271 ms 179648 KiB
10-04.txt AC 327 ms 180404 KiB
10-05.txt AC 277 ms 180044 KiB
10-06.txt AC 275 ms 179520 KiB
11-01.txt AC 272 ms 179572 KiB
11-02.txt AC 265 ms 179632 KiB
11-03.txt AC 272 ms 180280 KiB
11-04.txt AC 279 ms 180908 KiB
12-01.txt AC 268 ms 143936 KiB
12-02.txt AC 309 ms 170612 KiB
12-03.txt AC 217 ms 123196 KiB
12-04.txt AC 243 ms 145712 KiB
12-05.txt AC 209 ms 127488 KiB
12-06.txt AC 309 ms 179744 KiB
12-07.txt AC 277 ms 180384 KiB
12-08.txt AC 275 ms 180348 KiB
12-09.txt AC 273 ms 180396 KiB
12-10.txt AC 313 ms 179744 KiB
12-11.txt AC 276 ms 180404 KiB
12-12.txt AC 280 ms 180312 KiB
12-13.txt AC 273 ms 180384 KiB
12-14.txt AC 269 ms 180396 KiB
12-15.txt AC 270 ms 180420 KiB
12-16.txt AC 263 ms 180408 KiB
sample-01.txt AC 7 ms 19288 KiB
sample-02.txt AC 7 ms 19276 KiB
sample-03.txt AC 6 ms 19492 KiB
sample-04.txt AC 7 ms 19236 KiB
sample-05.txt AC 7 ms 19308 KiB