Submission #2448203
Source Code Expand
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef complex<double> point; #define mapii map<int, int> #define debug(a) cout << #a << ": " << a << endl #define debuga1(a, l, r) fto(i, l, r) cout << a[i] << " "; cout << endl #define fdto(i, r, l) for(int i = (r); i >= (l); --i) #define fto(i, l, r) for(int i = (l); i <= (r); ++i) #define forit(it, var) for(__typeof(var.begin()) it = var.begin(); it != var.end(); it++) #define forrit(rit, var) for(__typeof(var.rbegin()) rit = var.rbegin(); rit != var.rend(); rit++) #define ii pair<int, int> #define iii pair<int, ii> #define ff first #define ss second #define mp make_pair #define pb push_back #define maxN 100005 #define maxK 20 #define MOD 1000 #define oo 1000000000000000007LL #define sz(a) (int)a.size() const double PI = acos(-1.0); double fRand(double fMin, double fMax) { double f = (double)rand() / RAND_MAX; return fMin + f * (fMax - fMin); } template <class T> T min(T a, T b, T c) { return min(a, min(b, c)); } template <class T> T max(T a, T b, T c) { return max(a, max(b, c)); } int k, n, l, sa[maxN], rnk[maxN], lcp[maxN], b[maxK][maxN]; char s[2*maxN]; void buildSA() { fto(i, 0, n-1) rnk[i] = s[i]; int j = 0; while (true) { vector<pair<ii, int> > pos(n); fto(i, 0, n-1) pos[i] = mp(mp(rnk[i], rnk[i+(1<<j)]), i); sort(pos.begin(), pos.end()); int cnt = 1; fto(i, 0, n-1) { if (i > 0 && pos[i-1].ff != pos[i].ff) ++cnt; rnk[pos[i].ss] = cnt; } if (cnt == n) break; ++j; } fto(i, 0, n-1) { --rnk[i]; sa[rnk[i]] = i; } } void buildLCP() { int k = 0; fto(i, 0, n-1) { if (rnk[i] == 0) continue; k = max(0, k-1); int j = sa[rnk[i]-1]; while (s[j+k] == s[i+k]) ++k; lcp[rnk[i]-1] = k; } } void buildTable() { fto(j, 0, n-2) b[0][j] = lcp[j]; fto(i, 1, log2(n-1)) { fto(j, 0, n-(1<<i)-1) b[i][j] = min(b[i-1][j], b[i-1][j+(1<<(i-1))]); } } int getLCP(int x, int y) { int l = rnk[x], r = rnk[y]; if (l > r) swap(l, r); --r; int i = log2(r-l+1); return min(b[i][l], b[i][r-(1<<i)+1]); } bool cmp(int i, int j) { if (i == j) return true; int k = getLCP(i, j); if (k >= l) return true; return (s[i+k] <= s[j+k]); } bool Check(int ind) { int i = 0, cnt = 0; // debug(ind); while (i < n) { // debug(i); if (n-i < l) i = n; else if (cmp(i, ind)) i += l; else if (l == 1) return false; else i += l-1; ++cnt; } return (cnt <= k+1); } int main () { scanf("%d%s", &k, s); n = strlen(s); l = (n+k)/(k+1); buildSA(); buildLCP(); buildTable(); // fto(i, 0, n-1) printf("%d %d %d\n", sa[i], rnk[i], lcp[i]); vector<int> cand; fto(i, 0, n-1) if (sa[i] <= n-l) cand.pb(sa[i]); int lo = 0, hi = sz(cand)-1, res = -1; while (lo <= hi) { int mid = (lo+hi)/2; if (Check(cand[mid])) { res = cand[mid]; hi = mid-1; } else lo = mid+1; } printf("%.*s", l, s+res); return 0; }
Submission Info
Submission Time | |
---|---|
Task | B - Problem where Commas Separate Digits |
User | xuanquang1999 |
Language | C++14 (GCC 5.4.1) |
Score | 1000 |
Code Size | 3338 Byte |
Status | AC |
Exec Time | 160 ms |
Memory | 10604 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:119:25: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d%s", &k, s); ^
Judge Result
Set Name | Sample | Dataset1 | Dataset2 | Dataset3 | Dataset4 | Dataset5 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 100 / 100 | 100 / 100 | 200 / 200 | 200 / 200 | 400 / 400 | ||||||||||||
Status |
|
|
|
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask_02_ex1.txt, subtask_03_ex2.txt, subtask_03_ex3.txt |
Dataset1 | subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt |
Dataset2 | subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_02_01.txt, subtask_02_02.txt, subtask_02_03.txt, subtask_02_04.txt, subtask_02_05.txt, subtask_02_06.txt, subtask_02_07.txt, subtask_02_08.txt, subtask_02_09.txt, subtask_02_10.txt, subtask_02_11.txt, subtask_02_12.txt, subtask_02_13.txt, subtask_02_14.txt, subtask_02_ex1.txt |
Dataset3 | subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_02_01.txt, subtask_02_02.txt, subtask_02_03.txt, subtask_02_04.txt, subtask_02_05.txt, subtask_02_06.txt, subtask_02_07.txt, subtask_02_08.txt, subtask_02_09.txt, subtask_02_10.txt, subtask_02_11.txt, subtask_02_12.txt, subtask_02_13.txt, subtask_02_14.txt, subtask_02_ex1.txt, subtask_03_01.txt, subtask_03_02.txt, subtask_03_03.txt, subtask_03_04.txt, subtask_03_05.txt, subtask_03_06.txt, subtask_03_07.txt, subtask_03_08.txt, subtask_03_09.txt, subtask_03_10.txt, subtask_03_11.txt, subtask_03_12.txt, subtask_03_13.txt, subtask_03_14.txt, subtask_03_15.txt, subtask_03_ex2.txt, subtask_03_ex3.txt |
Dataset4 | subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_02_01.txt, subtask_02_02.txt, subtask_02_03.txt, subtask_02_04.txt, subtask_02_05.txt, subtask_02_06.txt, subtask_02_07.txt, subtask_02_08.txt, subtask_02_09.txt, subtask_02_10.txt, subtask_02_11.txt, subtask_02_12.txt, subtask_02_13.txt, subtask_02_14.txt, subtask_02_ex1.txt, subtask_03_01.txt, subtask_03_02.txt, subtask_03_03.txt, subtask_03_04.txt, subtask_03_05.txt, subtask_03_06.txt, subtask_03_07.txt, subtask_03_08.txt, subtask_03_09.txt, subtask_03_10.txt, subtask_03_11.txt, subtask_03_12.txt, subtask_03_13.txt, subtask_03_14.txt, subtask_03_15.txt, subtask_03_ex2.txt, subtask_03_ex3.txt, subtask_04_01.txt, subtask_04_02.txt, subtask_04_03.txt, subtask_04_04.txt, subtask_04_05.txt, subtask_04_06.txt, subtask_04_07.txt, subtask_04_08.txt, subtask_04_09.txt, subtask_04_10.txt, subtask_04_11.txt, subtask_04_12.txt, subtask_04_13.txt, subtask_04_14.txt, subtask_04_15.txt |
Dataset5 | subtask_01_01.txt, subtask_01_02.txt, subtask_01_03.txt, subtask_01_04.txt, subtask_01_05.txt, subtask_01_06.txt, subtask_01_07.txt, subtask_01_08.txt, subtask_01_09.txt, subtask_01_10.txt, subtask_01_11.txt, subtask_01_12.txt, subtask_01_13.txt, subtask_01_14.txt, subtask_01_15.txt, subtask_01_16.txt, subtask_01_17.txt, subtask_02_01.txt, subtask_02_02.txt, subtask_02_03.txt, subtask_02_04.txt, subtask_02_05.txt, subtask_02_06.txt, subtask_02_07.txt, subtask_02_08.txt, subtask_02_09.txt, subtask_02_10.txt, subtask_02_11.txt, subtask_02_12.txt, subtask_02_13.txt, subtask_02_14.txt, subtask_02_ex1.txt, subtask_03_01.txt, subtask_03_02.txt, subtask_03_03.txt, subtask_03_04.txt, subtask_03_05.txt, subtask_03_06.txt, subtask_03_07.txt, subtask_03_08.txt, subtask_03_09.txt, subtask_03_10.txt, subtask_03_11.txt, subtask_03_12.txt, subtask_03_13.txt, subtask_03_14.txt, subtask_03_15.txt, subtask_03_ex2.txt, subtask_03_ex3.txt, subtask_04_01.txt, subtask_04_02.txt, subtask_04_03.txt, subtask_04_04.txt, subtask_04_05.txt, subtask_04_06.txt, subtask_04_07.txt, subtask_04_08.txt, subtask_04_09.txt, subtask_04_10.txt, subtask_04_11.txt, subtask_04_12.txt, subtask_04_13.txt, subtask_04_14.txt, subtask_04_15.txt, subtask_05_01.txt, subtask_05_02.txt, subtask_05_03.txt, subtask_05_04.txt, subtask_05_05.txt, subtask_05_06.txt, subtask_05_07.txt, subtask_05_08.txt, subtask_05_09.txt, subtask_05_10.txt, subtask_05_11.txt, subtask_05_12.txt, subtask_05_13.txt, subtask_05_14.txt, subtask_05_15.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask_01_01.txt | AC | 3 ms | 2432 KB |
subtask_01_02.txt | AC | 2 ms | 2304 KB |
subtask_01_03.txt | AC | 2 ms | 2304 KB |
subtask_01_04.txt | AC | 2 ms | 2304 KB |
subtask_01_05.txt | AC | 2 ms | 2304 KB |
subtask_01_06.txt | AC | 2 ms | 2304 KB |
subtask_01_07.txt | AC | 2 ms | 2304 KB |
subtask_01_08.txt | AC | 2 ms | 2304 KB |
subtask_01_09.txt | AC | 2 ms | 2304 KB |
subtask_01_10.txt | AC | 2 ms | 2304 KB |
subtask_01_11.txt | AC | 2 ms | 2304 KB |
subtask_01_12.txt | AC | 2 ms | 2304 KB |
subtask_01_13.txt | AC | 2 ms | 2304 KB |
subtask_01_14.txt | AC | 1 ms | 256 KB |
subtask_01_15.txt | AC | 2 ms | 2304 KB |
subtask_01_16.txt | AC | 2 ms | 2304 KB |
subtask_01_17.txt | AC | 1 ms | 256 KB |
subtask_02_01.txt | AC | 3 ms | 2432 KB |
subtask_02_02.txt | AC | 2 ms | 2304 KB |
subtask_02_03.txt | AC | 2 ms | 2304 KB |
subtask_02_04.txt | AC | 2 ms | 2304 KB |
subtask_02_05.txt | AC | 2 ms | 2304 KB |
subtask_02_06.txt | AC | 2 ms | 2304 KB |
subtask_02_07.txt | AC | 1 ms | 2304 KB |
subtask_02_08.txt | AC | 2 ms | 2304 KB |
subtask_02_09.txt | AC | 2 ms | 2304 KB |
subtask_02_10.txt | AC | 2 ms | 2304 KB |
subtask_02_11.txt | AC | 2 ms | 2304 KB |
subtask_02_12.txt | AC | 1 ms | 2304 KB |
subtask_02_13.txt | AC | 2 ms | 2304 KB |
subtask_02_14.txt | AC | 2 ms | 2304 KB |
subtask_02_ex1.txt | AC | 2 ms | 2304 KB |
subtask_03_01.txt | AC | 2 ms | 4352 KB |
subtask_03_02.txt | AC | 2 ms | 4352 KB |
subtask_03_03.txt | AC | 2 ms | 4352 KB |
subtask_03_04.txt | AC | 2 ms | 4352 KB |
subtask_03_05.txt | AC | 2 ms | 4352 KB |
subtask_03_06.txt | AC | 2 ms | 4352 KB |
subtask_03_07.txt | AC | 2 ms | 4352 KB |
subtask_03_08.txt | AC | 2 ms | 4352 KB |
subtask_03_09.txt | AC | 2 ms | 4352 KB |
subtask_03_10.txt | AC | 2 ms | 4352 KB |
subtask_03_11.txt | AC | 2 ms | 4352 KB |
subtask_03_12.txt | AC | 2 ms | 4352 KB |
subtask_03_13.txt | AC | 2 ms | 4352 KB |
subtask_03_14.txt | AC | 2 ms | 4352 KB |
subtask_03_15.txt | AC | 2 ms | 2304 KB |
subtask_03_ex2.txt | AC | 1 ms | 2304 KB |
subtask_03_ex3.txt | AC | 2 ms | 4352 KB |
subtask_04_01.txt | AC | 3 ms | 6528 KB |
subtask_04_02.txt | AC | 3 ms | 6528 KB |
subtask_04_03.txt | AC | 3 ms | 6528 KB |
subtask_04_04.txt | AC | 3 ms | 6528 KB |
subtask_04_05.txt | AC | 3 ms | 6528 KB |
subtask_04_06.txt | AC | 3 ms | 6528 KB |
subtask_04_07.txt | AC | 3 ms | 6528 KB |
subtask_04_08.txt | AC | 3 ms | 6528 KB |
subtask_04_09.txt | AC | 3 ms | 6528 KB |
subtask_04_10.txt | AC | 3 ms | 6528 KB |
subtask_04_11.txt | AC | 3 ms | 6528 KB |
subtask_04_12.txt | AC | 4 ms | 6528 KB |
subtask_04_13.txt | AC | 2 ms | 4352 KB |
subtask_04_14.txt | AC | 2 ms | 4352 KB |
subtask_04_15.txt | AC | 3 ms | 6528 KB |
subtask_05_01.txt | AC | 104 ms | 10476 KB |
subtask_05_02.txt | AC | 106 ms | 10476 KB |
subtask_05_03.txt | AC | 79 ms | 10476 KB |
subtask_05_04.txt | AC | 78 ms | 10476 KB |
subtask_05_05.txt | AC | 68 ms | 10476 KB |
subtask_05_06.txt | AC | 62 ms | 10476 KB |
subtask_05_07.txt | AC | 60 ms | 10476 KB |
subtask_05_08.txt | AC | 48 ms | 10604 KB |
subtask_05_09.txt | AC | 47 ms | 10604 KB |
subtask_05_10.txt | AC | 74 ms | 10476 KB |
subtask_05_11.txt | AC | 107 ms | 10476 KB |
subtask_05_12.txt | AC | 160 ms | 10476 KB |
subtask_05_13.txt | AC | 40 ms | 9488 KB |
subtask_05_14.txt | AC | 48 ms | 10176 KB |
subtask_05_15.txt | AC | 23 ms | 8092 KB |