Please sign in first.
Submission #65067416
Source Code Expand
#define DEBUG 0
#include <bits/stdc++.h>
using namespace std;
#if DEBUG
// basic debugging macros
int __i__,__j__;
#define printLine(l) for(__i__=0;__i__<l;__i__++){cout<<"-";}cout<<endl
#define printLine2(l,c) for(__i__=0;__i__<l;__i__++){cout<<c;}cout<<endl
#define printVar(n) cout<<#n<<": "<<n<<endl
#define printArr(a,l) cout<<#a<<": ";for(__i__=0;__i__<l;__i__++){cout<<a[__i__]<<" ";}cout<<endl
#define print2dArr(a,r,c) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<a[__i__][__j__]<<" ";}cout<<endl;}
#define print2dArr2(a,r,c,l) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<setw(l)<<setfill(' ')<<a[__i__][__j__]<<" ";}cout<<endl;}
// advanced debugging class
// debug 1,2,'A',"test";
class _Debug {
public:
template<typename T>
_Debug& operator,(T val) {
cout << val << endl;
return *this;
}
};
#define debug _Debug(),
#else
#define printLine(l)
#define printLine2(l,c)
#define printVar(n)
#define printArr(a,l)
#define print2dArr(a,r,c)
#define print2dArr2(a,r,c,l)
#define debug
#endif
// define
#define MAX_VAL 999999999
#define MAX_VAL_2 999999999999999999LL
#define EPS 1e-6
#define mp make_pair
#define pb push_back
// typedef
typedef unsigned int UI;
typedef long long int LLI;
typedef unsigned long long int ULLI;
typedef unsigned short int US;
typedef pair<int,int> pii;
typedef pair<LLI,LLI> plli;
typedef vector<int> vi;
typedef vector<LLI> vlli;
typedef vector<pii> vpii;
typedef vector<plli> vplli;
// ---------- END OF TEMPLATE ----------
#define x first
#define y second
vi v;
vplli L,R;
int ccw(plli a,plli b,plli c) {
return (__int128) (b.x-a.x)*(c.y-a.y) >= (__int128) (b.y-a.y)*(c.x-a.x);
}
vplli parHull(vplli v) {
vplli hull;
sort(v.begin(),v.end());
for (auto p: v) {
if (!hull.empty() && (p.x == hull.back().x)) continue;
while (!hull.empty() && (p.y == hull.back().y)) hull.pop_back();
hull.pb(p);
}
return hull;
}
LLI f[3000005];
typedef long long ll;
struct Line {
mutable ll k, m, p;
bool operator<(const Line& o) const { return k < o.k; }
bool operator<(ll x) const { return p < x; }
};
struct LineContainer : multiset<Line, less<>> {
// (for doubles, use inf = 1/.0, div(a,b) = a/b)
static const ll inf = LLONG_MAX;
ll div(ll a, ll b) { // floored division
return a / b - ((a ^ b) < 0 && a % b); }
bool isect(iterator x, iterator y) {
if (y == end()) return x->p = inf, 0;
if (x->k == y->k) x->p = x->m > y->m ? inf : -inf;
else x->p = div(y->m - x->m, x->k - y->k);
return x->p >= y->p;
}
void add(ll k, ll m) {
auto z = insert({k, m, 0}), y = z++, x = y;
while (isect(y, z)) z = erase(z);
if (x != begin() && isect(--x, y)) isect(x, y = erase(y));
while ((y = x) != begin() && (--x)->p >= y->p)
isect(x, erase(y));
}
ll query(ll x) {
assert(!empty());
auto l = *lower_bound(x);
return l.k * x + l.m;
}
};
int main() {
int N,K;
string S;
cin >> N >> K >> S;
int i,c = 0;
LLI area = 0;
L.pb(mp(0,0));
for (i = 0; i < S.size(); i++) {
int o = c;
c += (S[i] == 'A') ? 1:-1;
if (o < 0) area += (-o+1)/2;
if (o > 0) f[o-1]++;
if (c >= 0) L.pb(mp(c,area));
}
c = area = 0;
R.pb(mp(0,0));
reverse(S.begin(),S.end());
for (i = 0; i < S.size(); i++) {
int o = c;
c += (S[i] == 'C') ? 1:-1;
if (o < 0) area += (-o+1)/2;
if (c >= 0) R.pb(mp(c,area));
}
for (i = N+2; i >= 0; i--) f[i] += f[i+2];
for (i = N+2; i >= 0; i--) f[i] += f[i+1];
L = parHull(L),R = parHull(R);
LineContainer hull;
for (plli a: L) {
for (plli b: R) {
hull.add(-f[a.x+b.x],-(a.y+b.y));
}
}
for (i = 1; i <= K; i++) printf("%lld\n",-hull.query(i));
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | B - AGC Language |
| User | duality |
| Language | C++ 20 (gcc 12.2) |
| Score | 1100 |
| Code Size | 4018 Byte |
| Status | AC |
| Exec Time | 555 ms |
| Memory | 106956 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:115:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
115 | for (i = 0; i < S.size(); i++) {
| ~~^~~~~~~~~~
Main.cpp:125:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
125 | for (i = 0; i < S.size(); i++) {
| ~~^~~~~~~~~~
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1100 / 1100 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| 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 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01-01.txt | AC | 1 ms | 3620 KiB |
| 01-02.txt | AC | 1 ms | 3824 KiB |
| 01-03.txt | AC | 15 ms | 3628 KiB |
| 01-04.txt | AC | 15 ms | 3628 KiB |
| 01-05.txt | AC | 15 ms | 3636 KiB |
| 01-06.txt | AC | 15 ms | 3684 KiB |
| 01-07.txt | AC | 15 ms | 3628 KiB |
| 01-08.txt | AC | 15 ms | 3584 KiB |
| 01-09.txt | AC | 15 ms | 3624 KiB |
| 01-10.txt | AC | 15 ms | 3760 KiB |
| 02-01.txt | AC | 15 ms | 3572 KiB |
| 02-02.txt | AC | 15 ms | 3768 KiB |
| 02-03.txt | AC | 15 ms | 3768 KiB |
| 02-04.txt | AC | 17 ms | 3772 KiB |
| 02-05.txt | AC | 165 ms | 50532 KiB |
| 02-06.txt | AC | 277 ms | 95904 KiB |
| 02-07.txt | AC | 47 ms | 13112 KiB |
| 02-08.txt | AC | 47 ms | 13104 KiB |
| 02-09.txt | AC | 49 ms | 13100 KiB |
| 02-10.txt | AC | 48 ms | 13112 KiB |
| 02-11.txt | AC | 53 ms | 13628 KiB |
| 02-12.txt | AC | 99 ms | 29696 KiB |
| 02-13.txt | AC | 208 ms | 71240 KiB |
| 02-14.txt | AC | 260 ms | 87220 KiB |
| 02-15.txt | AC | 223 ms | 73556 KiB |
| 02-16.txt | AC | 112 ms | 36032 KiB |
| 02-17.txt | AC | 149 ms | 43720 KiB |
| 02-18.txt | AC | 171 ms | 52580 KiB |
| 02-19.txt | AC | 204 ms | 72220 KiB |
| 02-20.txt | AC | 295 ms | 105632 KiB |
| 02-21.txt | AC | 287 ms | 99788 KiB |
| 02-22.txt | AC | 353 ms | 106652 KiB |
| 02-23.txt | AC | 524 ms | 106720 KiB |
| 02-24.txt | AC | 542 ms | 106880 KiB |
| 02-25.txt | AC | 532 ms | 106956 KiB |
| 03-01.txt | AC | 478 ms | 106828 KiB |
| 03-02.txt | AC | 70 ms | 18932 KiB |
| 03-03.txt | AC | 346 ms | 106356 KiB |
| 03-04.txt | AC | 293 ms | 91048 KiB |
| 03-05.txt | AC | 132 ms | 42500 KiB |
| 04-01.txt | AC | 205 ms | 44356 KiB |
| 04-02.txt | AC | 205 ms | 44232 KiB |
| 04-03.txt | AC | 204 ms | 44364 KiB |
| 05-01.txt | AC | 299 ms | 83308 KiB |
| 05-02.txt | AC | 300 ms | 76972 KiB |
| 05-03.txt | AC | 295 ms | 73692 KiB |
| 05-04.txt | AC | 270 ms | 71160 KiB |
| 05-05.txt | AC | 238 ms | 61836 KiB |
| 05-06.txt | AC | 221 ms | 83400 KiB |
| 05-07.txt | AC | 277 ms | 73812 KiB |
| 05-08.txt | AC | 268 ms | 71400 KiB |
| 06-01.txt | AC | 477 ms | 106652 KiB |
| 06-02.txt | AC | 475 ms | 105556 KiB |
| 06-03.txt | AC | 430 ms | 95696 KiB |
| 06-04.txt | AC | 216 ms | 48816 KiB |
| 06-05.txt | AC | 99 ms | 23784 KiB |
| 06-06.txt | AC | 61 ms | 15416 KiB |
| 06-07.txt | AC | 55 ms | 13656 KiB |
| 06-08.txt | AC | 263 ms | 59980 KiB |
| 06-09.txt | AC | 446 ms | 99944 KiB |
| 06-10.txt | AC | 432 ms | 97444 KiB |
| 06-11.txt | AC | 312 ms | 73104 KiB |
| 06-12.txt | AC | 458 ms | 101200 KiB |
| 06-13.txt | AC | 450 ms | 100656 KiB |
| 06-14.txt | AC | 320 ms | 74060 KiB |
| 06-15.txt | AC | 323 ms | 73984 KiB |
| 06-16.txt | AC | 371 ms | 84176 KiB |
| 06-17.txt | AC | 355 ms | 81648 KiB |
| 06-18.txt | AC | 342 ms | 79452 KiB |
| 06-19.txt | AC | 335 ms | 77432 KiB |
| 06-20.txt | AC | 316 ms | 75924 KiB |
| 06-21.txt | AC | 303 ms | 77148 KiB |
| 06-22.txt | AC | 280 ms | 84604 KiB |
| 07-01.txt | AC | 253 ms | 74356 KiB |
| 07-02.txt | AC | 260 ms | 78200 KiB |
| 07-03.txt | AC | 341 ms | 82124 KiB |
| 07-04.txt | AC | 244 ms | 73168 KiB |
| 07-05.txt | AC | 117 ms | 34028 KiB |
| 07-06.txt | AC | 209 ms | 71160 KiB |
| 07-07.txt | AC | 285 ms | 72428 KiB |
| 07-08.txt | AC | 120 ms | 33992 KiB |
| 07-09.txt | AC | 210 ms | 71012 KiB |
| 07-10.txt | AC | 287 ms | 72296 KiB |
| 07-11.txt | AC | 124 ms | 33660 KiB |
| 07-12.txt | AC | 210 ms | 70932 KiB |
| 07-13.txt | AC | 297 ms | 72044 KiB |
| 07-14.txt | AC | 106 ms | 25884 KiB |
| 07-15.txt | AC | 196 ms | 57752 KiB |
| 07-16.txt | AC | 277 ms | 70720 KiB |
| 08-01.txt | AC | 549 ms | 106908 KiB |
| 08-02.txt | AC | 549 ms | 106940 KiB |
| 08-03.txt | AC | 555 ms | 106868 KiB |
| 08-04.txt | AC | 48 ms | 13116 KiB |
| 08-05.txt | AC | 47 ms | 13020 KiB |
| 08-06.txt | AC | 541 ms | 106836 KiB |
| 08-07.txt | AC | 51 ms | 13100 KiB |
| 08-08.txt | AC | 536 ms | 106840 KiB |
| 08-09.txt | AC | 249 ms | 91204 KiB |
| 08-10.txt | AC | 205 ms | 75560 KiB |
| 09-01.txt | AC | 15 ms | 3760 KiB |
| 09-02.txt | AC | 15 ms | 3620 KiB |
| 09-03.txt | AC | 15 ms | 3692 KiB |
| 09-04.txt | AC | 16 ms | 3756 KiB |
| 09-05.txt | AC | 15 ms | 3832 KiB |
| 09-06.txt | AC | 15 ms | 3624 KiB |
| 09-07.txt | AC | 15 ms | 3832 KiB |
| 09-08.txt | AC | 15 ms | 3632 KiB |
| 09-09.txt | AC | 15 ms | 3760 KiB |
| 09-10.txt | AC | 15 ms | 3760 KiB |
| 10-01.txt | AC | 300 ms | 76112 KiB |
| 10-02.txt | AC | 247 ms | 81284 KiB |
| 10-03.txt | AC | 233 ms | 83268 KiB |
| 10-04.txt | AC | 298 ms | 76060 KiB |
| 10-05.txt | AC | 247 ms | 81264 KiB |
| 10-06.txt | AC | 234 ms | 83432 KiB |
| 11-01.txt | AC | 50 ms | 13060 KiB |
| 11-02.txt | AC | 51 ms | 13024 KiB |
| 11-03.txt | AC | 52 ms | 13456 KiB |
| 11-04.txt | AC | 54 ms | 14300 KiB |
| 12-01.txt | AC | 328 ms | 83420 KiB |
| 12-02.txt | AC | 403 ms | 100876 KiB |
| 12-03.txt | AC | 276 ms | 73956 KiB |
| 12-04.txt | AC | 165 ms | 43440 KiB |
| 12-05.txt | AC | 125 ms | 34140 KiB |
| 12-06.txt | AC | 307 ms | 75940 KiB |
| 12-07.txt | AC | 100 ms | 25088 KiB |
| 12-08.txt | AC | 81 ms | 19828 KiB |
| 12-09.txt | AC | 67 ms | 17416 KiB |
| 12-10.txt | AC | 289 ms | 73884 KiB |
| 12-11.txt | AC | 95 ms | 23756 KiB |
| 12-12.txt | AC | 84 ms | 20660 KiB |
| 12-13.txt | AC | 68 ms | 17384 KiB |
| 12-14.txt | AC | 63 ms | 15876 KiB |
| 12-15.txt | AC | 61 ms | 15556 KiB |
| 12-16.txt | AC | 57 ms | 13988 KiB |
| sample-01.txt | AC | 1 ms | 3636 KiB |
| sample-02.txt | AC | 1 ms | 3828 KiB |
| sample-03.txt | AC | 1 ms | 3624 KiB |
| sample-04.txt | AC | 1 ms | 3776 KiB |
| sample-05.txt | AC | 1 ms | 3584 KiB |