├── .gitignore ├── 404.html ├── LICENSE ├── README.md ├── index.html └── src ├── ACMNB.cpp ├── ADS.cpp ├── AMSSEQ.cpp ├── ANT.cpp ├── AREA.cpp ├── ASSIGN1.cpp ├── AUCTION.cpp ├── AZNET.cpp ├── BALLGAME.cpp ├── BARIC.cpp ├── BARICAVN.cpp ├── BASEH.cpp ├── BCDIV.cpp ├── BEADSNB.cpp ├── BESTSPOT.cpp ├── BIGNUM.cpp ├── BINARY2.cpp ├── BINLADEN.cpp ├── BLGEN.cpp ├── BLOPER.cpp ├── BONES.cpp ├── BONGDA.cpp ├── BONUS.cpp ├── BONUS.js ├── BONUS13.cpp ├── BWPOINTS.cpp ├── C11BC1.cpp ├── C11BC2.cpp ├── C11BEAU.cpp ├── C11CAL.cpp ├── C11CAVE.cpp ├── C11DK2.cpp ├── C11ID.cpp ├── C11KM.cpp ├── C11PAIRS.cpp ├── C11SEQ.cpp ├── C11STR2.cpp ├── C11SUM.cpp ├── C11TRCNT.cpp ├── CAR.cpp ├── CARDS.cpp ├── CARDSHUF.cpp ├── CATALAN.cpp ├── CBUYING.cpp ├── CENTRE28.cpp ├── CHAIN2.cpp ├── CHEAT.cpp ├── CHEER.cpp ├── CHESSCBG.cpp ├── CHNTOWER.cpp ├── CHUOIHAT.cpp ├── CLOCK.cpp ├── COLLECT.cpp ├── COMNET.cpp ├── COPRIMES.cpp ├── COUNTCBG.cpp ├── COUNTPL.cpp ├── CPPSET.cpp ├── CRATE.cpp ├── CREC01.cpp ├── CRECT.cpp ├── CT.cpp ├── CTNBULLS.cpp ├── CTREE.cpp ├── CWAY.java ├── DHEXP.cpp ├── DHFRBUS.cpp ├── DHLEXP.cpp ├── DHLOCK.cpp ├── DHLOCO.cpp ├── DHRECT.cpp ├── DHSERV.cpp ├── DHTABLE2.cpp ├── DQUERY.cpp ├── DTDOI.cpp ├── DTGAME.cpp ├── DTKSUB.cpp ├── EGG.cpp ├── FBRICK.cpp ├── FINDNUM.cpp ├── FIRS.cpp ├── FLOW1.cpp ├── FLOYD.cpp ├── FOCUS.cpp ├── FWATER.cpp ├── GONDOR.cpp ├── GRAPH_.cpp ├── GSS.cpp ├── HAF1.cpp ├── HAOI6000.cpp ├── HBTLCA.cpp ├── HEAP1.cpp ├── HELPPM.cpp ├── HIREHP.cpp ├── HOUSES.cpp ├── HSPC14A.cpp ├── HSPC14H.cpp ├── HSPC14I.cpp ├── HSPC14J.cpp ├── INSUL.cpp ├── IOIBIN.cpp ├── IVANA.cpp ├── KAGAIN.cpp ├── KANDP.cpp ├── KCOIN.cpp ├── KDIFF.cpp ├── KGSS.cpp ├── KINV.cpp ├── KKDD.cpp ├── KMEDIAN.cpp ├── KMIN.cpp ├── KPLANK.cpp ├── KQUERY.cpp ├── LASCALE.cpp ├── LATGACH.cpp ├── LATGACH4.cpp ├── LEM6.java ├── LEM7.cpp ├── LINEGAME.cpp ├── LIQ.cpp ├── LIS.cpp ├── LNACS.cpp ├── LQDDIV.cpp ├── LQDGONME.cpp ├── LSFIGHT.cpp ├── LTPMSEQ.cpp ├── LUBENICA.cpp ├── LUCKYNUM.cpp ├── M00PAIR.cpp ├── M3TILE.cpp ├── MATCH1.cpp ├── MATCH2.cpp ├── MAXARR1.cpp ├── MAXCUB.cpp ├── MBEEWALK.cpp ├── MBLAST.cpp ├── MCARDS.cpp ├── MCOINS.cpp ├── MDIGITS2.cpp ├── MDOLLS.cpp ├── MECUNG.cpp ├── MEDIAN.cpp ├── MESSAGE.cpp ├── MINCUT.cpp ├── MINK.cpp ├── MINROAD.cpp ├── MMASS.cpp ├── MMAXPER.cpp ├── MMMGAME.cpp ├── MNERED.cpp ├── MPILOT.cpp ├── MRECAMAN.cpp ├── MSE07B.cpp ├── MSTICK.cpp ├── MTREE.cpp ├── MTWALK.cpp ├── MULONE.cpp ├── MYSTERY.cpp ├── NCOB.cpp ├── NDCCARD.cpp ├── NETACCEL.cpp ├── NICEQUAD.cpp ├── NK05MNIM.cpp ├── NKABD.cpp ├── NKBM.cpp ├── NKBRACKE.cpp ├── NKBUS.cpp ├── NKCABLE.cpp ├── NKCITY.cpp ├── NKFLOW.cpp ├── NKGUARD.cpp ├── NKINV.cpp ├── NKLEAGUE.cpp ├── NKLETTER.cpp ├── NKLINEUP.cpp ├── NKLUCK.cpp ├── NKMAXSEQ.cpp ├── NKNUMFRE.cpp ├── NKONEARC.cpp ├── NKPALIN.cpp ├── NKPATH.cpp ├── NKPOLICE.cpp ├── NKPOS.cpp ├── NKRACING.cpp ├── NKREZ.cpp ├── NKSEQ.cpp ├── NKSGAME.cpp ├── NKTABLE.cpp ├── NKTEAM.cpp ├── NKTEST.cpp ├── NKTICK.cpp ├── NKTOSS.cpp ├── NKTREE.cpp ├── NOTE.cpp ├── NTPFECT.cpp ├── NTTREE.cpp ├── NUMBER.cpp ├── ONE4EVER.cpp ├── OPTCUT.cpp ├── ORDERSET.cpp ├── PA06ANT.cpp ├── PALINY.cpp ├── PARIGAME.cpp ├── PATULJCI.cpp ├── PBCDEM.cpp ├── PBCGANGS.cpp ├── PBCPOINT.cpp ├── PBCSEQ.cpp ├── PBCWATER.cpp ├── PCIRCLE.cpp ├── PIZZALOC.cpp ├── PNUMBER.cpp ├── POST.cpp ├── POST3.cpp ├── POTATO.cpp ├── PTQMSEQ.cpp ├── PTRANG.cpp ├── PVOI14_1.cpp ├── PVOI14_4.cpp ├── PVOI14_5.cpp ├── PWALK.cpp ├── PWRFAIL.cpp ├── PYRAMID2.cpp ├── QBAGENTS.cpp ├── QBBUILD.cpp ├── QBDIVSEQ.cpp ├── QBHEAP.cpp ├── QBMAX.cpp ├── QBMSEQ.cpp ├── QBMST.cpp ├── QBPAL.cpp ├── QBPOINT.cpp ├── QBRECT.cpp ├── QBROBOT.cpp ├── QBSCHOOL.cpp ├── QBSEQ.cpp ├── QBSQUARE.cpp ├── QBSTR.cpp ├── QBTICKET.cpp ├── QHROAD.cpp ├── QMAX.cpp ├── QMAX2.cpp ├── QMAX3VN.cpp ├── QMAX4.cpp ├── QTLOVE2.cpp ├── QUAD.cpp ├── RABGAME.java ├── REVAMP.cpp ├── ROBOCON.cpp ├── ROTATION.cpp ├── SAFENET2.cpp ├── SEARCH.cpp ├── SEARCH1.cpp ├── SEC.cpp ├── SETNJA.cpp ├── SETNJA.java ├── SHCH.cpp ├── SHHV.cpp ├── SHTH.cpp ├── SPSEQ.cpp ├── STABLE.cpp ├── STMERGE.cpp ├── STNODE.cpp ├── STONE1.cpp ├── SUBSTR.cpp ├── TAYTRUC.cpp ├── TCDFZ.cpp ├── TJALG.cpp ├── TRAFFICN.cpp ├── TREAT.cpp ├── TREEPATH.cpp ├── TRICIR.cpp ├── TTRAVEL.cpp ├── TTRIP.cpp ├── UPGRANET.cpp ├── V11WATER.cpp ├── V8ORG.cpp ├── V8SORT.cpp ├── VCOWFLIX.cpp ├── VDANGER.cpp ├── VECTOR.cpp ├── VMCANDLE.cpp ├── VMMTFIVE.cpp ├── VMST.cpp ├── VMUNCH.cpp ├── VNEMPIRE.cpp ├── VOSRTRI.cpp ├── VOSSEVEN.cpp ├── VOSTRAVL.cpp ├── VOSTRIBO.cpp ├── VRATF.cpp ├── VSTEPS.cpp ├── WEATHER.cpp ├── XAYNHA.cpp ├── XUCXAC.cpp ├── YPKTH.cpp ├── ZABAVA.cpp └── ZABAVA.js /.gitignore: -------------------------------------------------------------------------------- 1 | # bat 2 | *.bat 3 | 4 | # cpp 5 | 6 | # Prerequisites 7 | *.d 8 | 9 | # Compiled Object files 10 | *.slo 11 | *.lo 12 | *.o 13 | *.obj 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Compiled Dynamic libraries 20 | *.so 21 | *.dylib 22 | *.dll 23 | 24 | # Fortran module files 25 | *.mod 26 | *.smod 27 | 28 | # Compiled Static libraries 29 | *.lai 30 | *.la 31 | *.a 32 | *.lib 33 | 34 | # Executables 35 | *.exe 36 | *.out 37 | *.app 38 | 39 | # jekyll 40 | _site/ 41 | .sass-cache/ 42 | .jekyll-cache/ 43 | .jekyll-metadata 44 | 45 | # VS Code 46 | .vscode 47 | 48 | # generated files 49 | files 50 | 51 | # local files 52 | input.txt 53 | -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Solution for vn.spoj.com 2 | 3 | Serve static files solving problems on vn.spoj.com 4 | 5 | ### Webpage 6 | Visit our webpage at [https://vnspoj.github.io/](https://vnspoj.github.io/) 7 | 8 | ### Implementation 9 | The solution to the specific problem in plain code can be found [here](https://github.com/vnspoj/solution/tree/master/src) under `.cpp` 10 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/ACMNB.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 8*1e5+5; 19 | int n, res; 20 | ii a[N]; 21 | 22 | bool cmp(ii u, ii v) { 23 | return u.X-u.Y < v.X-v.Y; 24 | } 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | cin >> n; 31 | n *= 2; 32 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 33 | 34 | sort(a+1,a+n+1,cmp); 35 | 36 | FOR(i,1,n/2) res += a[i].X; 37 | FOR(i,n/2+1,n) res += a[i].Y; 38 | 39 | printf("%d\n", res); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/ADS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 2001; 19 | int n, m, cnt, dd[N]; 20 | vector a[N]; 21 | 22 | void dfs(int u) { 23 | dd[u] = 1; 24 | for (auto v : a[u]) 25 | if (!dd[v]) dfs(v); 26 | } 27 | 28 | int main() { 29 | // freopen("INP.TXT", "r", stdin); 30 | // freopen("OUT.TXT", "w", stdout); 31 | 32 | cin >> n >> m; 33 | FOR(i,1,m) { 34 | int u, v; 35 | scanf("%d%d", &u, &v); 36 | a[u].pb(v); 37 | a[v].pb(u); 38 | } 39 | 40 | FOR(u,1,n) 41 | if (!dd[u]) cnt++, dfs(u); 42 | 43 | cout << cnt+m-n << endl; 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/AMSSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 10001; 19 | int n, k, a[N], F[N], res; 20 | 21 | int main() { 22 | // freopen("INP.TXT", "r", stdin); 23 | // freopen("OUT.TXT", "w", stdout); 24 | 25 | cin >> n >> k; 26 | 27 | FOR(i,1,n) scanf("%d", &a[i]); 28 | FOR(i,1,n) { 29 | F[i] = -1e9; 30 | FOR(j,1,k) { 31 | F[i] = max(F[i], F[i-j] + a[i]); 32 | res = max(res, F[i]); 33 | } 34 | } 35 | 36 | cout << res << endl; 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/ANT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | ll n, m; 19 | 20 | int main() { 21 | // freopen("INP.TXT", "r", stdin); 22 | // freopen("OUT.TXT", "w", stdout); 23 | 24 | scanf("%lld%lld", &n,&m); 25 | 26 | ll p = n*m; 27 | while (p > n) p += (p-n-1)/(m-1)-n; 28 | 29 | printf("%lld\n", p); 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /src/AUCTION.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 1e6; 19 | int n, m, a[N+1], x, ans; 20 | ll sum; 21 | 22 | int main() { 23 | // freopen("INP.TXT", "r", stdin); 24 | // freopen("OUT.TXT", "w", stdout); 25 | 26 | scanf("%d%d", &n,&m); 27 | FOR(i,1,m) scanf("%d", &x), a[x]++; 28 | 29 | FOD(i,N-1,1) a[i] += a[i+1]; 30 | 31 | FOR(i,1,N) { 32 | ll tmp = i*(min(a[i],n)); 33 | if (tmp > sum) { 34 | sum = tmp; 35 | ans = i; 36 | } 37 | } 38 | 39 | printf("%d %lld\n", ans, sum); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/BARIC.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 105; 19 | const ll inf = 1e18; 20 | int n, E, a[N]; 21 | ll T[3][N][N], F[N][N][2]; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | cin >> n >> E; 28 | FOR(i,1,n) scanf("%d", &a[i]); 29 | 30 | FOR(i,1,n) 31 | FOR(j,i+1,n) 32 | T[1][i][j] = T[1][i][j-1] + 2ll * abs(a[j]-a[i]); 33 | 34 | FOR(i,1,n) 35 | FOR(j,i+1,n) 36 | FOR(k,i+1,j-1) 37 | T[2][i][j] += (ll) abs(2*a[k]-a[i]-a[j]); 38 | 39 | FOR(i,1,n) FOR(j,1,n) FOR(k,0,1) F[i][j][k] = inf; 40 | 41 | F[1][1][1] = 0ll; 42 | FOR(i,2,n) { 43 | F[i][1][1] = 0ll; 44 | FOR(j,1,i-1) { 45 | F[i][1][0] = min(F[i][1][0], F[j][1][1] + T[1][j][i]); 46 | F[i][1][1] += 2ll * abs(a[i]-a[j]); 47 | } 48 | } 49 | 50 | FOR(k,2,n) 51 | FOR(i,k,n) 52 | FOR(j,1,i-1) { 53 | F[i][k][0] = min(F[i][k][0], F[j][k][1] + T[1][j][i]); 54 | F[i][k][1] = min(F[i][k][1], F[j][k-1][1] + T[2][j][i]); 55 | } 56 | 57 | FOR(i,1,n) 58 | FOR(j,0,1) 59 | if (F[n][i][j] <= E) { 60 | printf("%d %lld\n", i, F[n][i][j]); 61 | return 0; 62 | } 63 | 64 | return 0; 65 | } 66 | -------------------------------------------------------------------------------- /src/BARICAVN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | struct data { 19 | int i, j, w, id; 20 | bool operator < (const data &o) const { 21 | if (i < o.i) return true; 22 | if (i == o.i && j < o.j) return true; 23 | return false; 24 | } 25 | }; 26 | 27 | const int N = 3e5+5; 28 | int n, k, F[N], pos[N], maxi[N], maxj[N]; 29 | data a[N]; 30 | 31 | void upd(int i) { 32 | maxi[a[i].i] = max(maxi[a[i].i], F[i]); 33 | maxj[a[i].j] = max(maxj[a[i].j], F[i]); 34 | } 35 | 36 | int main() { 37 | // freopen("INP.TXT", "r", stdin); 38 | // freopen("OUT.TXT", "w", stdout); 39 | 40 | cin >> n >> k; 41 | FOR(i,1,n) { 42 | scanf("%d%d%d", &a[i].i, &a[i].j, &a[i].w); 43 | a[i].id = i; 44 | } 45 | sort(a+1,a+n+1); 46 | FOR(i,1,n) pos[a[i].id] = i; 47 | 48 | F[pos[1]] = a[pos[1]].w; 49 | upd(pos[1]); 50 | 51 | FOR(i, pos[1]+1, pos[n]) { 52 | if (maxi[a[i].i] >= k) 53 | F[i] = max(F[i], maxi[a[i].i] - k + a[i].w); 54 | if (maxj[a[i].j] >= k) 55 | F[i] = max(F[i], maxj[a[i].j] - k + a[i].w); 56 | upd(i); 57 | } 58 | 59 | printf("%d\n", F[pos[n]]); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/BASEH.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | int k, h; 19 | string s; 20 | 21 | int main() { 22 | // freopen("INP.TXT", "r", stdin); 23 | // freopen("OUT.TXT", "w", stdout); 24 | 25 | scanf("%d%d", &k,&h); 26 | while (k > 0) { 27 | s = char(k%2+'0') + s; 28 | k /= 2; 29 | } 30 | cout << s; 31 | 32 | return 0; 33 | } 34 | -------------------------------------------------------------------------------- /src/BCDIV.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | int T, n, k; 19 | ll F[50][50]; 20 | 21 | int main() { 22 | // freopen("INP.TXT", "r", stdin); 23 | // freopen("OUT.TXT", "w", stdout); 24 | 25 | F[0][0] = 1ll; 26 | FOR(i,1,25) 27 | FOR(j,1,25) 28 | F[i][j] = F[i-1][j-1] + j*F[i-1][j]; 29 | 30 | scanf("%d", &T); 31 | while (T--) { 32 | scanf("%d%d", &n,&k); 33 | printf("%lld\n", F[n][k]); 34 | } 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/BEADSNB.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e5+5; 22 | int n, a[N], s[N], F0[N], F1[N], k, res; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &n); 29 | FOR(i,1,n) scanf("%d", &a[i]); 30 | 31 | k = 1; 32 | s[1] = a[n]; 33 | F0[n] = 1; 34 | FOD(i,n-1,1) { 35 | int j = k; 36 | while (j > 0 && a[i] >= s[j]) j--; 37 | if (j == k) s[++k] = 0; 38 | s[j+1] = max(s[j+1], a[i]); 39 | F0[i] = j+1; 40 | } 41 | 42 | k = 1; 43 | fillchar(s,0); 44 | s[1] = a[n]; 45 | F1[n] = 1; 46 | FOD(i,n-1,1) { 47 | int j = k; 48 | while (j > 0 && a[i] <= s[j]) j--; 49 | if (j == k) s[++k] = 1e9+7; 50 | s[j+1] = min(s[j+1], a[i]); 51 | F1[i] = j+1; 52 | } 53 | 54 | FOR(i,1,n) res = max(res, F0[i]+F1[i]-1); 55 | printf("%d\n", res); 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/BINARY2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e6+6, mod = 1e9; 22 | int n, k; 23 | ll F[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d %d", &n, &k); 30 | F[0] = F[1] = 1ll % mod; 31 | FOR(i,2,k) F[i] = 2*F[i-1] % mod; 32 | FOR(i,k+1,n) 33 | F[i] = (2*F[i-1] % mod - F[i-k-1] + mod) % mod; 34 | printf("%lld\n", 2*F[n] % mod); 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/BLOPER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, s, a[505], sum; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | scanf("%d%d", &n,&s); 28 | sum = n*(n+1)/2; 29 | FOD(i,n,1) { 30 | if (sum-2*i >= s) { 31 | a[i] = 1; 32 | sum -= 2*i; 33 | } 34 | } 35 | if (sum == s) { 36 | if (a[1]) { 37 | FOR(i,4,n) { 38 | if (a[1] == 0) break; 39 | if (a[i]) 40 | FOR(j,2,i/2) 41 | if (a[j] == 0 && a[i+1-j] == 0) { 42 | a[j] = a[i+1-j] = 1; 43 | a[1] = a[i] = 0; 44 | break; 45 | } 46 | } 47 | if (a[1]) { 48 | puts("Impossible"); 49 | return 0; 50 | } 51 | } 52 | printf("1"); 53 | FOR(i,2,n) 54 | printf("%c%d", (a[i] == 1) ? '-' : '+', i); 55 | } else puts("Impossible"); 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/BONES.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 100; 22 | int a, b, c, cnt[N]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d%d", &a,&b,&c); 29 | FOR(i,1,a) FOR(j,1,b) FOR(k,1,c) cnt[i+j+k]++; 30 | int ans = 0; 31 | FOR(i,1,a+b+c) if (cnt[ans] < cnt[i]) ans = i; 32 | printf("%d\n", ans); 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /src/BONUS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define EL printf("\n") 13 | #define sz(A) (int) A.size() 14 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 15 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 16 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 17 | 18 | const int N = 1001; 19 | int n, k, F[N][N], ans; 20 | 21 | int main() 22 | { 23 | //freopen("INP.INP", "r", stdin); 24 | //freopen("OUT.OUT", "w", stdout); 25 | 26 | scanf("%d%d", &n,&k); 27 | FOR(i,1,n) 28 | FOR(j,1,n) { 29 | scanf("%d", &F[i][j]); 30 | F[i][j] += F[i-1][j] + F[i][j-1] - F[i-1][j-1]; 31 | } 32 | 33 | FOR(i,k,n) 34 | FOR(j,k,n) { 35 | int S = F[i][j] - F[i-k][j] - F[i][j-k] + F[i-k][j-k]; 36 | ans = max(ans, S); 37 | } 38 | 39 | printf("%d\n", ans); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/BWPOINTS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 200005; 22 | int n, m, ans, Now; 23 | ii a[N]; 24 | 25 | bool cmp(ii u, ii v) { 26 | return u.X < v.X; 27 | } 28 | 29 | int main() { 30 | // freopen("INP.TXT", "r", stdin); 31 | // freopen("OUT.TXT", "w", stdout); 32 | 33 | scanf("%d", &n); 34 | FOR(i,1,n) scanf("%d", &a[++m].X), a[i].Y = 0; 35 | FOR(i,1,n) scanf("%d", &a[++m].X), a[i].Y = 1; 36 | sort(a+1, a+m+1, cmp); 37 | Now = a[1].Y; 38 | FOR(i,2,m) 39 | if (a[i].Y + Now == 1) ans++, Now = -1; 40 | else Now = a[i].Y; 41 | printf("%d\n", ans); 42 | 43 | return 0; 44 | } 45 | -------------------------------------------------------------------------------- /src/C11BC1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 100001, M = 790972; 22 | int n, k; 23 | ll F[2][51], ans; 24 | ii a[N]; 25 | 26 | bool cmp(ii u, ii v) { 27 | return u.Y < v.Y; 28 | } 29 | 30 | int get(int L, int R) { 31 | F[1][1] = a[L].X; 32 | FOR(i,2,k) F[1][i] = 0; 33 | FOR(i,L+1,R) { 34 | FOR(j,1,k) F[0][j] = F[1][j]; 35 | F[1][1] = F[0][1] + a[i].X; 36 | FOR(j,2,k) 37 | F[1][j] = (F[0][j] + F[0][j-1] * a[i].X % M) % M; 38 | } 39 | 40 | return F[1][k]; 41 | } 42 | 43 | 44 | int main() { 45 | // freopen("INP.TXT", "r", stdin); 46 | // freopen("OUT.TXT", "w", stdout); 47 | 48 | scanf("%d%d", &n,&k); 49 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 50 | sort(a+1,a+n+1,cmp); 51 | 52 | ans = get(1,n); 53 | 54 | int L = 1, R = 1; 55 | ll S = 0ll; 56 | while (L <= n) { 57 | while (R < n && a[R+1].Y == a[L].Y) ++R; 58 | S = (S + get(L,R)) % M; 59 | L = ++R; 60 | } 61 | 62 | ans = (ans - S + 2 * M) % M; 63 | 64 | printf("%d\n", ans); 65 | 66 | return 0; 67 | } 68 | -------------------------------------------------------------------------------- /src/C11BC2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 10010; 22 | int n, m, pa[N], Rank[N]; 23 | 24 | int FindSet(int u) { 25 | if (u == pa[u]) return u; 26 | return pa[u] = FindSet(pa[u]); 27 | } 28 | 29 | void Union(int u, int v) { 30 | u = FindSet(u); 31 | v = FindSet(v); 32 | if (u == v) return ; 33 | pa[v] = u; 34 | if (Rank[v] > Rank[u]) swap(Rank[v], Rank[u]); 35 | if (Rank[v] == Rank[u]) Rank[u]++; 36 | } 37 | 38 | 39 | int main() { 40 | // freopen("INP.TXT", "r", stdin); 41 | // freopen("OUT.TXT", "w", stdout); 42 | 43 | scanf("%d%d\n", &n,&m); 44 | FOR(i,1,n) pa[i] = i; 45 | FOR(v,2,n) { 46 | int u, k; 47 | scanf("%d%d\n", &u,&k); 48 | if (k == 1) Union(u,v); 49 | } 50 | FOR(i,1,m) { 51 | int u, v; 52 | scanf("%d%d\n", &u,&v); 53 | printf("%s\n", FindSet(u) == FindSet(v) ? "NO" : "YES"); 54 | } 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/C11BEAU.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int t, ca, cb, ma, mb; 22 | 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &t); 29 | while (t--) { 30 | scanf("%d%d%d%d", &ca, &cb, &ma, &mb); 31 | if (ma == 0) ca = 0; 32 | if (mb == 0) cb = 0; 33 | if (ca > cb) swap(ca, cb), swap(ma, mb); 34 | printf("%lld\n", ca + min((ll)cb, (ll)mb * (ca+1))); 35 | } 36 | 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/C11CAVE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500005; 22 | int m, n, cnt, F[N]; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &m,&n); 30 | FOR(i,1,m) { 31 | int h, l, r; 32 | scanf("%d", &h); 33 | if (i%2) l = 1, r = h; 34 | else l = n-h+1, r = n; 35 | F[l]++; 36 | F[r+1]--; 37 | } 38 | FOR(i,1,n) { 39 | F[i] += F[i-1]; 40 | if (F[i] < m) m = F[i], cnt = 1; 41 | else if (F[i] == m) cnt++; 42 | } 43 | printf("%d %d\n", m, cnt); 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/C11ID.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e5+5, mod = 1e9+7; 22 | ll n, a[N], ans = 1ll; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &n); 30 | FOR(i,1,n) scanf("%lld", &a[i]); 31 | sort(a+1, a+n+1); 32 | FOR(i,1,n) ans = ans * (a[i]-i+1) % mod; 33 | printf("%lld\n", ans); 34 | 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /src/C11KM.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1010, oo = N*300; 22 | int n, a[N], F[N][N], ans = oo; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &n); 30 | FOR(i,1,n) scanf("%d", &a[i]); 31 | FOR(i,0,n+1) FOR(j,0,n+1) F[i][j] = oo; 32 | F[0][0] = 0; 33 | FOR(i,1,n) 34 | FOR(j,0,n) 35 | if (a[i] > 100 && j > 0) 36 | F[i][j] = min(F[i-1][j-1] + a[i], F[i-1][j+1]); 37 | else 38 | F[i][j] = min(F[i-1][j] + a[i], F[i-1][j+1]); 39 | FOR(i,0,n) ans = min(ans, F[n][i]); 40 | printf("%d\n", ans); 41 | 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /src/C11PAIRS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, x; 22 | ll ans; 23 | stack st; 24 | map cnt; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d\n", &n); 32 | while (n--) { 33 | scanf("%d\n", &x); 34 | while (!st.empty() && x > st.top()) { 35 | cnt[st.top()]--; 36 | st.pop(); 37 | ans++; 38 | } 39 | if (!st.empty()) 40 | ans += x == st.top() ? cnt[x] + (st.size() > cnt[x]) : 1; 41 | st.push(x); 42 | cnt[x]++; 43 | } 44 | printf("%lld\n", ans); 45 | 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/C11STR2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | string a, b, s; 22 | 23 | vector Z_Function(string s) { 24 | vector z(s.size(),0); 25 | for(int i=1,l=0,r=0; i r) l = i, r = i+z[i]-1; 29 | } 30 | return z; 31 | } 32 | 33 | 34 | int main() { 35 | // freopen("INP.TXT", "r", stdin); 36 | // freopen("OUT.TXT", "w", stdout); 37 | 38 | cin >> a >> b; 39 | s = b + '#' + a; 40 | vector z = Z_Function(s); 41 | int ans = 0; 42 | FOR(i,b.size()+1,s.size()-1) { 43 | if (ans < z[i] && i+z[i] == s.size()) ans = z[i]; 44 | } 45 | FOR(i,0,a.size()-1) printf("%c", a[i]); 46 | FOR(i,ans,b.size()-1) printf("%c", b[i]); 47 | EL; 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/C11SUM.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 2000000, mod = 1000000007; 22 | int n; 23 | ll f[N], res; 24 | char s[N]; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%s", &s); 32 | n = strlen(s); 33 | for (int i=1; i<=n; i++) 34 | f[i] = (f[i-1]*10 + (s[i-1]-'0')*i) % mod; 35 | 36 | for (int i=1; i<=n; i++) 37 | res = (res + f[i]) % mod; 38 | 39 | printf("%lld", res); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/C11TRCNT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 222; 22 | int n, F[N], ans, id; 23 | ii a[N]; 24 | 25 | bool check(ii A, ii B, ii C) { 26 | int xab = B.X - A.X, yab = B.Y - A.Y; 27 | int xac = C.X - A.X, yac = C.Y - A.Y; 28 | return (ll)xab * yac != (ll)xac * yab; 29 | } 30 | 31 | 32 | int main() { 33 | // freopen("INP.TXT", "r", stdin); 34 | // freopen("OUT.TXT", "w", stdout); 35 | 36 | scanf("%d", &n); 37 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 38 | FOR(i,1,n) FOR(j,i+1,n) FOR(k,j+1,n) 39 | if (check(a[i],a[j],a[k])) { 40 | ans++; 41 | F[i]++; 42 | F[j]++; 43 | F[k]++; 44 | } 45 | id = 1; 46 | FOR(i,2,n) if (F[i] < F[id]) id = i; 47 | printf("%d %d\n", ans, id); 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/CAR.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct data { 22 | int val, time, id; 23 | }; 24 | 25 | const int N = 10010; 26 | int n; 27 | data a[N]; 28 | ll ans, sum; 29 | 30 | bool cmp(data u, data v) { 31 | return (ll)u.val * v.time > (ll)u.time * v.val; 32 | } 33 | 34 | 35 | int main() { 36 | // freopen("INP.TXT", "r", stdin); 37 | // freopen("OUT.TXT", "w", stdout); 38 | 39 | scanf("%d", &n); 40 | FOR(i,1,n) scanf("%d", &a[i].val), sum += (ll)a[i].val; 41 | FOR(i,1,n) scanf("%d", &a[i].time), a[i].id = i; 42 | sort(a+1, a+n+1, cmp); 43 | FOR(i,1,n) { 44 | ans += sum * a[i].time; 45 | sum -= a[i].val; 46 | } 47 | printf("%lld\n", ans); 48 | FOR(i,1,n) printf("%d ", a[i].id); 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/CATALAN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, a[35]; 22 | ll x, F[35][35]; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &n); 30 | n = 2*n+1; 31 | 32 | F[0][0] = 1ll; 33 | F[1][1] = 1ll; 34 | FOR(j,2,n-1) { 35 | F[0][j] = F[1][j-1]; 36 | FOR(i,1,n+1) F[i][j] = F[i-1][j-1] + F[i+1][j-1]; 37 | } 38 | 39 | FOR(i,1,n) scanf("%d", &a[i]); 40 | x = 1ll; 41 | FOR(i,2,n) { 42 | if (a[i] < a[i-1] || a[i-1] == 0) continue; 43 | x += F[a[i-1]-1][n-i]; 44 | } 45 | printf("%lld\n", x); 46 | 47 | scanf("%lld\n", &x); 48 | x--; 49 | a[1] = 0; 50 | FOR(i,2,n) { 51 | if (a[i-1] == 0) a[i] = 1; 52 | else { 53 | if (x >= F[a[i-1]-1][n-i]) { 54 | x -= F[a[i-1]-1][n-i]; 55 | a[i] = a[i-1]+1; 56 | } else a[i] = a[i-1]-1; 57 | } 58 | } 59 | FOR(i,1,n) printf("%d ", a[i]); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/CBUYING.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | typedef pair pll; 22 | 23 | const int N = 100005; 24 | int n; 25 | ll b, ans; 26 | pll a[N]; 27 | 28 | bool cmp(pll u, pll v) { 29 | return u.X < v.X; 30 | } 31 | 32 | 33 | int main() { 34 | // freopen("INP.TXT", "r", stdin); 35 | // freopen("OUT.TXT", "w", stdout); 36 | 37 | scanf("%d%lld\n", &n, &b); 38 | FOR(i,1,n) scanf("%lld%lld", &a[i].X, &a[i].Y); 39 | sort(a+1, a+n+1, cmp); 40 | FOR(i,1,n) { 41 | ll sl = b / a[i].X; 42 | if (sl < a[i].Y) { 43 | ans += sl; 44 | break; 45 | } else { 46 | ans += a[i].Y; 47 | b -= a[i].X * a[i].Y; 48 | } 49 | } 50 | printf("%lld\n", ans); 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/CHAIN2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | typedef struct Trie { 22 | int f, g; 23 | Trie * c[30]; 24 | } * trie; 25 | 26 | trie New() { 27 | trie a = new Trie(); 28 | a->f = a->g = 0; 29 | return a; 30 | } 31 | 32 | trie root = New(); 33 | 34 | int dfs(trie a) { 35 | a->g = a->f; 36 | FOR(i,0,25) 37 | if (a->c[i] != nullptr) { 38 | dfs(a->c[i]); 39 | a->g = max(a->g, a->f + a->c[i]->g); 40 | } 41 | } 42 | 43 | 44 | int main() { 45 | // freopen("INP.TXT", "r", stdin); 46 | // freopen("OUT.TXT", "w", stdout); 47 | 48 | int n; 49 | scanf("%d\n", &n); 50 | while (n--) { 51 | string s; 52 | getline(cin, s); 53 | trie a = root; 54 | FOR(i,0,s.size()-1) { 55 | if (a->c[s[i]-'a'] == nullptr) a->c[s[i]-'a'] = New(); 56 | a = a->c[s[i]-'a']; 57 | } 58 | a->f = 1; 59 | } 60 | 61 | dfs(root); 62 | 63 | cout << root->g; 64 | 65 | return 0; 66 | } 67 | -------------------------------------------------------------------------------- /src/CHEAT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e5+5; 22 | int n, x, a[N]; 23 | stack st; 24 | 25 | int solve() { 26 | FOR(i,1,n) { 27 | if (a[i] > a[i-1]) { 28 | for (x = x + 1; x < a[i]; x++) st.push(x); 29 | } else { 30 | if (! st.empty() && st.top() == a[i]) st.pop(); 31 | else 32 | return puts("YES"); 33 | } 34 | } 35 | return puts("NO"); 36 | } 37 | 38 | 39 | int main() { 40 | // freopen("INP.TXT", "r", stdin); 41 | // freopen("OUT.TXT", "w", stdout); 42 | 43 | cin >> n; 44 | FOR(i,1,n) scanf("%d", &a[i]); 45 | solve(); 46 | 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /src/CHEER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct edge { 22 | int u, v, c; 23 | bool operator < (const edge &o) const { 24 | return c < o.c; 25 | } 26 | }; 27 | 28 | const int N = 1e5+5; 29 | int n, m, c[N], pa[N], sz[N]; 30 | edge e[N]; 31 | ll ans = 1001ll; 32 | 33 | int FindSet(int u) { 34 | if (u == pa[u]) return u; 35 | return pa[u] = FindSet(pa[u]); 36 | } 37 | 38 | 39 | int main() { 40 | // freopen("INP.TXT", "r", stdin); 41 | // freopen("OUT.TXT", "w", stdout); 42 | 43 | scanf("%d%d", &n,&m); 44 | FOR(i,1,n) scanf("%d", &c[i]); 45 | FOR(i,1,m) { 46 | int u, v, w; 47 | scanf("%d%d%d", &u,&v,&w); 48 | e[i] = {u, v, w * 2 + c[u] + c[v]}; 49 | } 50 | sort(e+1, e+m+1); 51 | 52 | FOR(i,1,n) pa[i] = i, sz[i] = 1, ans = min(ans, (ll) c[i]); 53 | FOR(i,1,m) { 54 | int u = FindSet(e[i].u), v = FindSet(e[i].v); 55 | if (u == v) continue; 56 | pa[v] = u; 57 | sz[u] += sz[v]; 58 | ans += (ll) e[i].c; 59 | } 60 | 61 | printf("%lld\n", ans); 62 | 63 | return 0; 64 | } 65 | -------------------------------------------------------------------------------- /src/CHNTOWER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | ll n, m, f[100][100]; 22 | 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | for (int i=1; i<=64; i++) 29 | for (int j=3; j<=64; j++) 30 | if (j == 3) { 31 | f[i][j] = 1; 32 | for (int k=1; k<=i; k++) f[i][j] *= 2; 33 | f[i][j]--; 34 | } else if (i == j) 35 | f[i][j] = 2*i+1; 36 | else if (i < j) 37 | f[i][j] = 2*i-1; 38 | else { 39 | f[i][j] = LONG_LONG_MAX; 40 | for (int k=1; k 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int maxn = 50000; // can(2^31-1) 23 | int n, res = 1; 24 | bool a[maxn]; 25 | int z, p[maxn], k[maxn], Max; 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d",&n); 32 | Max = sqrt(n); 33 | int i = 2, j; 34 | a[1] = true; 35 | a[0] = true; 36 | while (i <= Max) { 37 | if (n % i == 0) { 38 | z++; 39 | p[z] = i; 40 | } 41 | j = i + i; 42 | while (j <= Max) { 43 | a[j] = true; 44 | j += i; 45 | } 46 | i++; 47 | while (a[i]) i++; 48 | } 49 | 50 | int m = n; 51 | for (int i=1; i<=z; i++) { 52 | while (m % p[i] == 0) { 53 | k[i]++; 54 | m /= p[i]; 55 | } 56 | } 57 | if (m > 1) { 58 | z++; 59 | p[z] = m; 60 | k[z] = 1; 61 | } 62 | 63 | for (int i=1; i<=z; i++) { 64 | long tmp = 1; 65 | for (int j=1; j 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, res; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | while (scanf("%d", &n) != EOF) { 28 | ll mx = sqrt(n*2); 29 | res = 0; 30 | FOR(i,2,mx) 31 | if (n*2%i == 0 && (i+n*2/i-1)%2 == 0) res++; 32 | cout << res << endl; 33 | } 34 | 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /src/COUNTPL.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 300, inf = 1e9; 22 | int n, F[N], f[N][N]; 23 | char a[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%s\n", a+1); 30 | n = strlen(a+1); 31 | 32 | FOD(i,n,1) 33 | FOR(j,i,n) 34 | if (i == j) f[i][j] = 1; 35 | else { 36 | if (i == j-1) f[i][j] = a[i] == a[j]; 37 | else { 38 | if (a[i] == a[j]) f[i][j] = f[i+1][j-1]; 39 | } 40 | } 41 | 42 | F[1] = 1; 43 | FOR(i,2,n) { 44 | F[i] = inf; 45 | FOR(j,1,i) 46 | if (f[j][i]) 47 | F[i] = min(F[i], F[j-1] + 1); 48 | } 49 | 50 | printf("%d\n", F[n]); 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/CREC01.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1005; 22 | int n, m, L[N], h[N]; 23 | ll F[N], ans; 24 | char a[N]; 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d%d\n", &n,&m); 31 | FOR(i,1,n) { 32 | scanf("%s\n", a+1); 33 | FOR(j,1,m) h[j] = a[j] == '1' ? h[j] + 1 : 0; 34 | 35 | stack st; 36 | FOR(j,1,m) { 37 | while (! st.empty() && h[j] <= h[st.top()]) st.pop(); 38 | L[j] = st.empty() ? 1 : st.top() + 1; 39 | st.push(j); 40 | } 41 | 42 | FOR(j,1,m) { 43 | int k = L[j] - 1; 44 | F[j] = (ll) h[j] * (j - k) + F[k]; 45 | ans += F[j]; 46 | } 47 | } 48 | 49 | cout << ans; 50 | 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/CT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int t, x, y; 22 | ll res; 23 | 24 | ll getA(int l, int r) { 25 | l = max(l,0); 26 | r = min(r,x); 27 | return (ll) r-l+1; 28 | } 29 | 30 | ll getB(int l, int r) { 31 | l = max(l,0); 32 | r = min(r,y); 33 | return (ll) r-l+1; 34 | } 35 | 36 | void solve(int i, int j) { 37 | res += getA(i-j,i-j+y)*getB(i+j-x,i+j)-1; 38 | res += getA(j+i-y,j+i)*getB(j-i,j-i+x)-1; 39 | } 40 | 41 | int main() { 42 | // freopen("INP.TXT", "r", stdin); 43 | // freopen("OUT.TXT", "w", stdout); 44 | 45 | scanf("%d\n", &t); 46 | while(t--) { 47 | scanf("%d%d\n", &x,&y); 48 | res = 0ll; 49 | FOR(i,0,x) FOR(j,0,y) solve(i,j); 50 | printf("%lld\n", res/2); 51 | } 52 | 53 | return 0; 54 | } 55 | -------------------------------------------------------------------------------- /src/CTNBULLS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int base = 2111992; 22 | int n,k,f[100100]; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d",&n,&k); 30 | for (int i=1; i0;i--) { 12 | tmp = tmp.multiply(BigInteger.valueOf(i)); 13 | ans = ans.add(tmp); 14 | } 15 | System.out.println(ans); 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /src/DHEXP.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n,k; 22 | ll ans, a[1000006]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d", &n,&k); 29 | scanf("%lld", &ans); 30 | n--; 31 | FOR(i,1,n) scanf("%lld", &a[i]); 32 | sort(a+1,a+n+1); 33 | FOR(i,1,n) 34 | if (i <= n-k) ans -= a[i]; 35 | else ans += a[i]; 36 | printf("%lld\n", ans); 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/DHLOCK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 305; 23 | const ll inf = 1e18; 24 | int n, k, a[N], b[N]; 25 | 26 | #define pos(x) (x - shift_left + n - 1) % n + 1 27 | #define dis(x,y) x <= y ? y - x : k - x + y + 1 28 | #define add(x,d) (x + d) % (k + 1) 29 | 30 | 31 | 32 | int main() { 33 | // freopen("INP.TXT", "r", stdin); 34 | // freopen("OUT.TXT", "w", stdout); 35 | 36 | cin >> n >> k; 37 | FOR(i,1,n) scanf("%d", &a[i]); 38 | FOR(i,1,n) scanf("%d", &b[i]); 39 | 40 | ll ans = 0ll; 41 | FOR(i,1,n) ans += dis(a[i], b[i]); 42 | 43 | FOR(shift_left,0,n-1) { 44 | FOR(p,1,n) { 45 | int del = dis(a[pos(p)], b[p]); 46 | ll sum = (ll) shift_left + del; 47 | FOR(i,1,n) 48 | sum += (ll) dis(add(a[pos(i)], del), b[i]); 49 | ans = min(ans, sum); 50 | } 51 | } 52 | 53 | printf("%lld\n", ans); 54 | 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /src/DHRECT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 3e5+5; 23 | int T, n, a[N]; 24 | 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d", &T); 31 | while (T--) { 32 | scanf("%d", &n); 33 | FOR(i,1,n) scanf("%d", &a[i]); 34 | sort(a+1,a+n+1); 35 | int x = -1; 36 | ll ans = -1; 37 | map m; 38 | FOD(i,n,1) { 39 | m[a[i]]++; 40 | if (m[a[i]] == 2) { 41 | if (x == -1) x = a[i]; 42 | else { 43 | ans = (ll) x * a[i]; 44 | break; 45 | } 46 | } else if (m[a[i]] == 4) { 47 | ans = (ll) a[i] * a[i]; 48 | break; 49 | } 50 | } 51 | printf("%lld\n", ans); 52 | } 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/DTDOI.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1000000; 23 | const int inf = 1e9; 24 | int n, s, a[150], F[N+1], ans; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d%d", &n, &s); 32 | FOR(i,1,n) scanf("%d", &a[i]); 33 | sort(a+1, a+n+1); 34 | FOR(i,1,N/n) { 35 | F[i] = inf; 36 | FOR(j,1,n) 37 | if (a[j] <= i) 38 | F[i] = min(F[i], 1 + F[i-a[j]]); 39 | else break; 40 | } 41 | 42 | if (s <= N/n) { 43 | printf("%d\n", F[s]); 44 | return 0; 45 | } 46 | 47 | ans = inf; 48 | 49 | int time = 0; 50 | for (int cnt = s / a[n]; cnt > 0; cnt--) { 51 | int t = s - a[n] * cnt; 52 | if (t > N/n || time > N) break; 53 | ans = min(ans, cnt + F[t]); 54 | time++; 55 | } 56 | 57 | printf("%d\n", ans); 58 | 59 | return 0; 60 | } 61 | -------------------------------------------------------------------------------- /src/DTGAME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 3000; 23 | int n; 24 | int a[N], f[N][N], s[N][N]; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d", &n); 32 | for (int i=1; i<=n; i++) { 33 | scanf("%d", &a[i]); 34 | s[i][i] = i; 35 | a[i] += a[i-1]; 36 | } 37 | 38 | for (int j=2; j<=n; j++) 39 | for (int i=j-1; i>0; i--) { 40 | for (int k=s[i][j-1]; k<=s[i+1][j]; k++) { 41 | ll ans = min(f[i][k]+a[k]-a[i-1], f[k+1][j]+a[j]-a[k]); 42 | if (f[i][j] < ans) { 43 | f[i][j] = ans; 44 | s[i][j] = k; 45 | } 46 | } 47 | } 48 | 49 | printf("%d", f[1][n]); 50 | 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/EGG.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1009, z = 1000; 23 | int t, n, m, f[N][N], llog[N]; 24 | 25 | int Log(int x) { 26 | int cnt = 0; 27 | while (x > 0) { 28 | cnt++; 29 | x /= 2; 30 | } 31 | return cnt; 32 | } 33 | 34 | void init() { 35 | for (int i=1; i<=z; i++) llog[i] = Log(i); 36 | for (int i=1; i<=z; i++) 37 | for (int j=1; j<=z; j++) f[i][j] = z; 38 | for (int i=1; i<=z; i++) f[1][i] = i; 39 | for (int i=2; i<=z; i++) { 40 | for (int j=1; j<=z; j++) { 41 | if (i > llog[j]) f[i][j] = f[i-1][j]; 42 | else 43 | for (int k=2; k<=j; k++) 44 | f[i][j] = min(f[i][j], max(f[i-1][k-1], f[i][j-k])+1); 45 | } 46 | } 47 | } 48 | 49 | 50 | int main() { 51 | // freopen("INP.TXT", "r", stdin); 52 | // freopen("OUT.TXT", "w", stdout); 53 | 54 | init(); 55 | scanf("%d", &t); 56 | while (t--) { 57 | scanf("%d%d", &n, &m); 58 | printf("%d\n", f[n][m]); 59 | } 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/FINDNUM.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const ll oo = 1000000000000000001ll; 23 | ll p[20] = {0,2,3,5,7,11,13,17,19,23,29}; 24 | ll n, res = oo; 25 | 26 | void solve(int i, ll ans, int cnt) { 27 | if (cnt > n) return ; 28 | if (cnt == n) res = min(res, ans); 29 | for (int j=1;; j++) { 30 | if (ans*p[i] > res) break; 31 | ans *= p[i]; 32 | if (ans < 0) break; 33 | solve(i+1, ans, cnt*(j+1)); 34 | } 35 | } 36 | 37 | 38 | int main() { 39 | // freopen("INP.TXT", "r", stdin); 40 | // freopen("OUT.TXT", "w", stdout); 41 | 42 | scanf("%d", &n); 43 | solve(1,1,1); 44 | printf("%lld", res); 45 | 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/FWATER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 305; 23 | 24 | int n, w[N], d[N], c[N][N], dd[N]; 25 | 26 | struct data { 27 | int u, d; 28 | bool operator < (const data &o) const { 29 | return d > o.d; 30 | } 31 | }; 32 | 33 | priority_queue st; 34 | 35 | void read() { 36 | cin >> n; 37 | FOR(i,1,n) scanf("%d", &w[i]); 38 | FOR(u,1,n) FOR(v,1,n) scanf("%d", &c[u][v]); 39 | } 40 | 41 | void solve() { 42 | FOR(u,1,n) { 43 | d[u] = w[u]; 44 | st.push({u, d[u]}); 45 | } 46 | 47 | int res = 0; 48 | while (!st.empty()) { 49 | data t = st.top(); 50 | st.pop(); 51 | int u = t.u; 52 | if (d[u] < t.d) continue; 53 | res += d[u]; 54 | dd[u] = 1; 55 | FOR(v,1,n) { 56 | if (u != v && !dd[v] && c[u][v] < d[v]) { 57 | d[v] = c[u][v]; 58 | st.push({v, d[v]}); 59 | } 60 | } 61 | } 62 | 63 | cout << res << endl; 64 | } 65 | 66 | int main() { 67 | // freopen("INP.TXT", "r", stdin); 68 | // freopen("OUT.TXT", "w", stdout); 69 | 70 | read(); 71 | solve(); 72 | 73 | return 0; 74 | } 75 | -------------------------------------------------------------------------------- /src/HAF1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1001, inf = 2e9; 23 | int n, m, a[N], ans, F[2][N][4]; 24 | 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | 32 | scanf("%d%d", &n,&m); 33 | 34 | FOR(i,1,m) { 35 | FOR(j,1,n) { 36 | scanf("%d", &a[j]); 37 | FOR(t,0,3) F[0][j][t] = F[1][j][t]; 38 | F[1][j][2] = a[j] + F[0][j][3]; 39 | if (j == 1) 40 | F[1][j][0] = inf; 41 | else 42 | F[1][j][0] = a[j] + min(F[1][j-1][0], F[1][j-1][2]); 43 | } 44 | FOD(j,n,1) { 45 | if (j == n) 46 | F[1][j][1] = inf; 47 | else 48 | F[1][j][1] = a[j] + min(F[1][j+1][1], F[1][j+1][2]); 49 | F[1][j][3] = min(min(F[1][j][0], F[1][j][1]), F[1][j][2]); 50 | } 51 | } 52 | 53 | int ans = inf; 54 | FOR(j,1,n) ans = min(ans, F[1][j][3]); 55 | 56 | printf("%d\n", ans); 57 | 58 | 59 | return 0; 60 | } 61 | -------------------------------------------------------------------------------- /src/HEAP1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | 30 | int T; 31 | cin >> T; 32 | while (T--) { 33 | priority_queue st; 34 | int n; 35 | scanf("%d", &n); 36 | FOR(i,1,n) { 37 | int x; 38 | scanf("%d", &x); 39 | st.push(-x); 40 | } 41 | ll ans = 0ll; 42 | FOR(i,1,n-1) { 43 | ll x = st.top(); 44 | st.pop(); 45 | ll y = st.top(); 46 | st.pop(); 47 | ans += x+y; 48 | st.push(x+y); 49 | } 50 | printf("%lld\n", -ans); 51 | } 52 | 53 | return 0; 54 | } 55 | -------------------------------------------------------------------------------- /src/HELPPM.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 505; 23 | const ll inf = 1e9; 24 | int n, m, k, ans, i1, i2, J1, j2; 25 | ll F[N][N]; 26 | 27 | 28 | int main() { 29 | // freopen("INP.TXT", "r", stdin); 30 | // freopen("OUT.TXT", "w", stdout); 31 | 32 | scanf("%d%d%d", &n,&m,&k); 33 | FOR(i,1,n) 34 | FOR(j,1,m) { 35 | int x; 36 | scanf("%d", &x); 37 | F[i][j] = F[i-1][j] + F[i][j-1] + (ll) x - F[i-1][j-1]; 38 | } 39 | 40 | ans = inf; 41 | 42 | FOR(L,1,m) 43 | FOR(R,L,m) { 44 | int i = 1, j = 1; 45 | while (i <= j && j <= n) { 46 | ll W = F[j][R] - F[j][L-1] - F[i-1][R] + F[i-1][L-1]; 47 | if (W >= k) { 48 | int S = (R-L+1) * (j-i+1); 49 | if (S < ans) 50 | ans = S, i1 = i, J1 = L, i2 = j, j2 = R; 51 | i++; 52 | } else 53 | j++; 54 | } 55 | } 56 | 57 | if (ans == inf) puts("-1"); 58 | else 59 | printf("%d\n%d %d %d %d\n", ans, i1, J1, i2, j2); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/HSPC14A.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1000000, oo = 1000000000; 23 | int t, m, n, x; 24 | ll res; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d", &t); 32 | while (t--) { 33 | scanf("%d", &m); 34 | if (m == 1) printf("0\n"); 35 | else { 36 | res = oo; 37 | for (int i=1; i<=m; i++) { 38 | ll ans = 0; 39 | x = i; 40 | n = m; 41 | while (1) { 42 | if (n == 1 and x == 1) break; 43 | ans++; 44 | if (ans >= res) break; 45 | n = n-x; 46 | if (n < x) swap(n,x); 47 | } 48 | res = min(res,ans); 49 | } 50 | printf("%lld\n", res); 51 | } 52 | } 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/HSPC14H.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 2000; 22 | int n, m, a[N][N], b[N][N], x; 23 | int f[N][N], fa[N][N], fb[N][N]; 24 | char c; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | scanf("%d%d", &n, &m); 32 | for (int i=1; i<=n; i++) { 33 | scanf("\n"); 34 | for (int j=1; j<=m; j++) { 35 | scanf("%c", &c); 36 | scanf("%d", &x); 37 | if (c == 'A') 38 | a[i][j] = x; 39 | else 40 | b[i][j] = x; 41 | scanf(" "); 42 | } 43 | } 44 | 45 | for (int i=1; i<=n; i++) 46 | for (int j=1; j<=m; j++) { 47 | fa[i][j] = fa[i][j-1] + a[i][j]; 48 | fb[i][j] = fb[i-1][j] + b[i][j]; 49 | } 50 | 51 | for (int i=2; i<=n; i++) 52 | for (int j=2; j<=m; j++) { 53 | f[i][j] = f[i-1][j-1] + fa[i][j-1] + fb[i-1][j]; 54 | f[i][j] = max(f[i][j], f[i-1][j] + fa[i][j-1]); 55 | f[i][j] = max(f[i][j], f[i][j-1] + fb[i-1][j]); 56 | } 57 | 58 | printf("%d", f[n][m]); 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/HSPC14I.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int a,b,c,res; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | while (scanf("%d",&a) == 1) { 28 | scanf("%d%d",&b,&c); 29 | printf("%d\n",max(b-a-1,c-b-1)); 30 | } 31 | 32 | return 0; 33 | } 34 | -------------------------------------------------------------------------------- /src/HSPC14J.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, k, a[100000], top, res ; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | while (scanf("%d",&n) == 1) { 28 | scanf("%d",&k); 29 | for (int i=1; i<=n+1; i++) a[i] = 1; 30 | a[1] = a[0] = 0; 31 | top = 0; 32 | res = 0; 33 | int i = 2; 34 | while (i <= n) { 35 | top++; 36 | if (top == k) { 37 | res = i; 38 | break; 39 | } 40 | for (int j=i+i; j<=n; j+=i) { 41 | if (a[j] == 1) { 42 | a[j] = 0; 43 | top++; 44 | if (top == k) { 45 | res = j; 46 | break; 47 | } 48 | } 49 | } 50 | if (res > 0) break; 51 | i++; 52 | while (a[i] == 0) i++; 53 | } 54 | printf("%d\n",res); 55 | } 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/INSUL.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | long n,a[120000]; 22 | int64_t res = 0; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%li",&n); 29 | for (long i=1; i<=n; i++) { 30 | scanf("%li",&a[i]); 31 | res += a[i]; 32 | } 33 | sort(a+1,a+n+1); 34 | long tmp = 0; 35 | if (n % 2 == 0) { 36 | for (long i=1; i<=n/2; i++) 37 | tmp += a[i]; 38 | res += (res - tmp) - tmp; 39 | } else { 40 | for (long i=1; i<=n/2; i++) 41 | tmp += a[i]; 42 | long tmp2 = res - tmp - a[n/2+1]; 43 | res += tmp2 - tmp; 44 | } 45 | printf("%I64d",res); 46 | 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /src/IOIBIN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 10000; 22 | int n, u, v, t, pa[N+1], rnk[N+1]; 23 | 24 | int FindSet(int u) { 25 | if (u == pa[u]) return u; 26 | return pa[u] = FindSet(pa[u]); 27 | } 28 | 29 | int main() { 30 | // freopen("INP.TXT", "r", stdin); 31 | // freopen("OUT.TXT", "w", stdout); 32 | 33 | FOR(i,1,N) pa[i] = i, rnk[i] = 0; 34 | scanf("%d", &n); 35 | while (n--) { 36 | scanf("%d%d%d", &u,&v,&t); 37 | u = FindSet(u); 38 | v = FindSet(v); 39 | if (t == 1) { 40 | pa[v] = u; 41 | if (rnk[u] < rnk[v]) swap(rnk[u], rnk[v]); 42 | if (rnk[u] == rnk[v]) rnk[u]++; 43 | } else { 44 | printf("%d\n", u == v); 45 | } 46 | } 47 | 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/IVANA.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, a[500], f[500][500], res; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | scanf("%d", &n); 28 | for (int i=1; i<=n; i++) { 29 | scanf("%d", &a[i]); 30 | a[i] %= 2; 31 | f[i][i] = (a[i] == 1); 32 | } 33 | 34 | for (int len=1; len 0); 45 | } 46 | 47 | printf("%d", res); 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/KAGAIN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 30005; 22 | int T, n, a[N], L[N], R[N]; 23 | stack st; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> T; 30 | while (T--) { 31 | scanf("%d", &n); 32 | FOR(i,1,n) scanf("%d", &a[i]); 33 | 34 | stack st; 35 | FOR(i,1,n) { 36 | while (! st.empty() && a[i] <= a[st.top()]) st.pop(); 37 | L[i] = st.empty() ? 1 : st.top() + 1; 38 | st.push(i); 39 | } 40 | 41 | st = stack {}; 42 | FOD(i,n,1) { 43 | while (! st.empty() && a[i] <= a[st.top()]) st.pop(); 44 | R[i] = st.empty() ? n : st.top() - 1; 45 | st.push(i); 46 | } 47 | 48 | int ans = 0, i = 0, j = 0; 49 | FOR(k,1,n) 50 | if (ans < (R[k] - L[k] + 1 ) * a[k]) 51 | ans = (R[k] - L[k] + 1 ) * a[k], i = L[k], j = R[k]; 52 | 53 | printf("%d %d %d\n", ans, i, j); 54 | } 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/KCOIN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | ll n, res, cnt; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | scanf("%lld", &n); 28 | while (n > 0) { 29 | cnt += (n%2); 30 | n /= 2; 31 | } 32 | res = 1ll; 33 | for (int i=1; i<=cnt; i++) res *= 2ll; 34 | printf("%lld", res); 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/KDIFF.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 3e5+5; 22 | int n, k, a[N], F[N]; 23 | deque Max, Min; 24 | 25 | void push(int x) { 26 | while (! Max.empty() && x > Max.back()) Max.pop_back(); 27 | Max.push_back(x); 28 | while (! Min.empty() && x < Min.back()) Min.pop_back(); 29 | Min.push_back(x); 30 | } 31 | 32 | void pop(int x) { 33 | if (x == Max.front()) Max.pop_front(); 34 | if (x == Min.front()) Min.pop_front(); 35 | } 36 | 37 | 38 | int main() { 39 | // freopen("INP.TXT", "r", stdin); 40 | // freopen("OUT.TXT", "w", stdout); 41 | 42 | scanf("%d%d", &n,&k); 43 | FOR(i,1,n) scanf("%d", &a[i]); 44 | 45 | int i = 1; 46 | FOR(j,1,n) { 47 | push(a[j]); 48 | while (Max.front() - Min.front() > k) pop(a[i++]); 49 | F[j] = j - i + 1; 50 | } 51 | 52 | int ans = 0; 53 | FOR(i,1,n) { 54 | ans = max(ans, F[i] + F[i-F[i]]); 55 | F[i] = max(F[i-1], F[i]); 56 | } 57 | 58 | printf("%d\n", ans); 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/KINV.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 50000, mod = 1000000000; 22 | int n, k, a[N], vt[N]; 23 | ll res, f[20][N], t[N]; 24 | 25 | ll get(int x) { 26 | ll ans = 0; 27 | while (x <= n) { 28 | ans = (ans + t[x]) % mod; 29 | x += x & (-x); 30 | } 31 | return ans; 32 | } 33 | 34 | void update(int x, ll add) { 35 | while (x > 0) { 36 | t[x] = (t[x] + add) % mod; 37 | x -= x & (-x); 38 | } 39 | } 40 | 41 | 42 | int main() { 43 | // freopen("INP.TXT", "r", stdin); 44 | // freopen("OUT.TXT", "w", stdout); 45 | 46 | scanf("%d%d", &n,&k); 47 | for (int i=1; i<=n; i++) { 48 | scanf("%d", &a[i]); 49 | vt[a[i]] = i; 50 | } 51 | 52 | for (int i=1; i<=n; i++) f[1][i] = 1; 53 | for (int i=2; i<=k; i++) { 54 | for (int j=1; j<=n; j++) t[j] = 0; 55 | for (int j=1; j<=n; j++) { 56 | f[i][j] = get(a[j]+1); 57 | update(a[j], f[i-1][j]); 58 | } 59 | } 60 | 61 | for (int i=1; i<=n; i++) 62 | res = (res + f[k][i]) % mod; 63 | 64 | printf("%lld", res); 65 | 66 | return 0; 67 | } 68 | -------------------------------------------------------------------------------- /src/KMEDIAN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500000; 22 | int n, k, a[N], f[N], b[N]; 23 | ll t[N], res; 24 | 25 | void update(int x) { 26 | for (x; x<=a[0]; x+=x&-x) t[x]++; 27 | } 28 | 29 | ll get(int x) { 30 | ll ans = 0; 31 | for (x; x>0; x-=x&-x) ans += t[x]; 32 | return ans; 33 | } 34 | 35 | int main() { 36 | // freopen("INP.TXT", "r", stdin); 37 | // freopen("OUT.TXT", "w", stdout); 38 | 39 | scanf("%d%d", &n,&k); 40 | for (int i=1; i<=n; i++) { 41 | scanf("%d", &a[i]); 42 | f[i] = f[i-1] + (a[i] >= k); 43 | b[++b[0]] = 2*f[i]-i-1; 44 | b[++b[0]] = 2*f[i-1]-i; 45 | } 46 | 47 | sort(b+1,b+b[0]+1); 48 | b[++b[0]] = N; 49 | for (int i=1; i 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 5e5+5; 22 | int a[N], b[N], n; 23 | 24 | struct data { 25 | int i, j, c; 26 | bool operator < (const data &o) const { 27 | return c > o.c; 28 | } 29 | }; 30 | 31 | priority_queue st; 32 | 33 | 34 | int main() { 35 | // freopen("INP.TXT", "r", stdin); 36 | // freopen("OUT.TXT", "w", stdout); 37 | 38 | cin >> a[0] >> b[0] >> n; 39 | FOR(i,1,a[0]) scanf("%d", &a[i]); 40 | sort(a+1,a+a[0]+1); 41 | FOR(i,1,b[0]) scanf("%d", &b[i]); 42 | sort(b+1,b+b[0]+1); 43 | 44 | FOR(j,1,b[0]) st.push({1, j, a[1]+b[j]}); 45 | 46 | FOR(i,1,n) { 47 | data t = st.top(); 48 | st.pop(); 49 | printf("%d\n", t.c); 50 | if (t.i < a[0]) 51 | st.push({t.i+1, t.j, a[t.i+1] + b[t.j]}); 52 | } 53 | 54 | 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /src/KPLANK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e6+6; 22 | int n, a[N], L[N], R[N]; 23 | stack st; 24 | 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d", &n); 31 | FOR(i,1,n) scanf("%d", &a[i]); 32 | 33 | FOR(i,1,n) { 34 | while (! st.empty() && a[i] <= a[st.top()]) st.pop(); 35 | L[i] = st.empty() ? 1 : st.top() + 1; 36 | st.push(i); 37 | } 38 | 39 | st = stack {}; 40 | FOD(i,n,1) { 41 | while (! st.empty() && a[i] <= a[st.top()]) st.pop(); 42 | R[i] = st.empty() ? n : st.top() - 1; 43 | st.push(i); 44 | } 45 | 46 | int ans = 0; 47 | FOR(i,1,n) 48 | if (R[i] - L[i] + 1 >= a[i]) ans = max(ans, a[i]); 49 | 50 | printf("%d\n", ans); 51 | 52 | 53 | return 0; 54 | } 55 | -------------------------------------------------------------------------------- /src/LASCALE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | ll n, tr[20], ph[20], nt, np, a[20]; 22 | 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%I64d",&n); 29 | a[0] = 1; 30 | for (int i=1; i<=18; i++) a[i] = a[i-1]*3; 31 | for (int i=0; n>0; n/=3,i++) ph[i] = n%3; 32 | for (int i=0; i<=17; i++) { 33 | if (ph[i] == 1) np++; 34 | else if (ph[i] == 2) nt++, tr[i] = 1, ph[i+1]++; 35 | else if (ph[i] == 3) ph[i+1]++; 36 | } 37 | 38 | printf("%I64d ", nt); 39 | for (int i=0; i<=18; i++) 40 | if (tr[i] == 1) printf("%I64d ", a[i]); 41 | 42 | EL; 43 | 44 | printf("%I64d ", np); 45 | for (int i=0; i<=18; i++) 46 | if (ph[i] == 1) printf("%I64d ", a[i]); 47 | 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/LATGACH.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int base = 1e9; 22 | typedef vector BigInt; 23 | 24 | void Print(BigInt a) { 25 | printf("%d", a.back()); 26 | FOD(i,a.size()-2,0) printf("%09d", a[i]); 27 | EL; 28 | } 29 | 30 | BigInt bigint(int x) { 31 | BigInt a; 32 | a.ep(x); 33 | return a; 34 | } 35 | 36 | BigInt operator + (BigInt a, BigInt b) { 37 | BigInt c; 38 | int v = 0; 39 | FOR(i,0,max(a.size(), b.size())-1) { 40 | if (i < a.size()) v += a[i]; 41 | if (i < b.size()) v += b[i]; 42 | c.ep(v%base); 43 | v /= base; 44 | } 45 | if (v) c.ep(v); 46 | return c; 47 | } 48 | 49 | 50 | int main() { 51 | // freopen("INP.TXT", "r", stdin); 52 | // freopen("OUT.TXT", "w", stdout); 53 | 54 | int T, n; 55 | BigInt F[150]; 56 | 57 | F[1] = bigint(1); 58 | F[2] = bigint(2); 59 | FOR(i,3,100) F[i] = F[i-1] + F[i-2]; 60 | scanf("%d", &T); 61 | while (T--) { 62 | scanf("%d", &n); 63 | Print(F[n]); 64 | } 65 | 66 | return 0; 67 | } 68 | -------------------------------------------------------------------------------- /src/LEM7.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 15000, oo = 10000000; 23 | int e, fn[N], fs[N], fk[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &e); 30 | 31 | for (int i=1; i<=e; i++) 32 | for (int j=sqrt(i); j>0; j--) 33 | if (i%j == 0) { 34 | fn[i] = j + i/j; 35 | fs[i] = min(j, i/j); 36 | fk[i] = 1; 37 | break; 38 | } 39 | 40 | for (int i=2; i<=e; i++) 41 | for (int j=1; j*2<=i; j++) { 42 | int n = fn[j] + fn[i-j]; 43 | int s = fs[j] + fs[i-j]; 44 | int k = fk[j] + fk[i-j]; 45 | if (n < fn[i] or (n == fn[i] and s < fs[i]) or (n == fn[i] and s == fs[i] and k < fk[i])) { 46 | fn[i] = n; 47 | fs[i] = s; 48 | fk[i] = k; 49 | } 50 | } 51 | 52 | printf("%d %d %d", fn[e], fs[e], fk[e]); 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/LINEGAME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n,a[1000001]; 22 | ll f1[1000001],f2[1000001],res; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | for (int i=1; i<=n; i++) scanf("%d",&a[i]); 29 | for (int i=1; i<=n; i++) { 30 | f1[i] = max(f1[i-1],f2[i-1]+ll(a[i])); 31 | f2[i] = max(f2[i-1],f1[i-1]-ll(a[i])); 32 | } 33 | res = max(f1[n],f2[n]); 34 | printf("%lld",res); 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/LIQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1005; 23 | int n, a[N], F[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> n; 30 | FOR(i,1,n) scanf("%d", &a[i]); 31 | 32 | a[++n] = 10001; 33 | FOR(j,1,n) { 34 | F[j] = 1; 35 | FOR(i,1,j-1) if (a[i] < a[j]) F[j] = max(F[j], F[i]+1); 36 | } 37 | 38 | cout << F[n]-1; 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/LIS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 3e4+5; 23 | int n, a[N], f[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> n; 30 | FOR(i,1,n) scanf("%d", &a[i]); 31 | 32 | f[1] = 1; 33 | int res = 1; 34 | FOR(i,2,n) { 35 | int l = 1, r = res, j = 0; 36 | while (l <= r) { 37 | int m = (l+r)/2; 38 | if (a[i] > a[f[m]]) { 39 | j = m; 40 | l = m+1; 41 | } else r = m-1; 42 | } 43 | if (j == res) f[++res] = i; 44 | if (a[i] < a[f[j+1]]) f[j+1] = i; 45 | } 46 | 47 | cout << res << endl; 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/LNACS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500; 22 | int n, m, a[N], b[N], F[N][N]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d", &n,&m); 29 | FOR(i,1,n) scanf("%d", &a[i]); 30 | FOR(j,1,m) scanf("%d", &b[j]); 31 | FOR(i,1,n) F[i][1] = F[i-1][1] || a[i] == b[1]; 32 | FOR(j,1,m) F[1][j] = F[1][j-1] || a[1] == b[j]; 33 | FOR(i,2,n) 34 | FOR(j,2,m) { 35 | F[i][j] = max(F[i-1][j], F[i][j-1]); 36 | if (a[i] == b[j]) 37 | F[i][j] = max(F[i][j], F[i-2][j-2] + 1); 38 | } 39 | printf("%d\n", F[n][m]); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/LQDGONME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500; 22 | int n, m, a[15][N], F[N], pos[N][15], ans; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d", &n,&m); 29 | FOR(i,1,m) 30 | FOR(j,1,n) { 31 | scanf("%d", &a[i][j]); 32 | pos[a[i][j]][i] = j; 33 | } 34 | FOR(x,1,n) { 35 | int j = a[1][x]; 36 | FOR(y,0,x-1) { 37 | int i = a[1][y], ok = 1; 38 | FOR(k,2,m) 39 | if (pos[j][k] <= pos[i][k]) { 40 | ok = 0; 41 | break; 42 | } 43 | if (ok) 44 | F[j] = max(F[j], F[i] + 1); 45 | } 46 | ans = max(ans, F[j]); 47 | } 48 | printf("%d\n", ans); 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/LSFIGHT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 550; 22 | int n, a[N][N], F[N][N]; 23 | vector ans; 24 | 25 | int next(int i, int kc) { 26 | return (i + kc + n - 1) % n + 1; 27 | } 28 | 29 | 30 | int main() { 31 | // freopen("INP.TXT", "r", stdin); 32 | // freopen("OUT.TXT", "w", stdout); 33 | 34 | scanf("%d", &n); 35 | FOR(i,1,n) FOR(j,1,n) scanf("%d", &a[i][j]); 36 | FOR(i,1,n-1) F[i][i+1] = 1; 37 | F[n][1] = 1; 38 | FOR(kc,2,n-1) { 39 | FOR(i,1,n) { 40 | int j = next(i, kc), k = i; 41 | FOR(cnt,1,kc-1) { 42 | k = next(k, 1); 43 | if (F[i][k] && F[k][j] && (a[i][k] || a[j][k])) { 44 | F[i][j] = 1; 45 | break; 46 | } 47 | } 48 | } 49 | } 50 | 51 | FOR(i,1,n) { 52 | int j = i; 53 | FOR(cnt,1,n-1) { 54 | j = next(j, 1); 55 | if (F[i][j] && F[j][i] && a[i][j]) { 56 | ans.ep(i); 57 | break; 58 | } 59 | } 60 | } 61 | 62 | printf("%d\n", ans.size()); 63 | for (auto i : ans) printf("%d\n", i); 64 | 65 | 66 | return 0; 67 | } 68 | -------------------------------------------------------------------------------- /src/M3TILE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n; 22 | ll F[35]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | F[0] = 1ll; 29 | for (int i = 2; i <= 30; i += 2) { 30 | F[i] = 3 * F[i-2]; 31 | for (int j = 0; j <= i - 4; j += 2) 32 | F[i] += 2 * F[j]; 33 | } 34 | while (scanf("%d", &n) != EOF) { 35 | if (n == -1) break; 36 | printf("%lld\n", F[n]); 37 | } 38 | 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /src/MAXARR1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1e5; 23 | int T, n, a[N+1], f[N+1]; 24 | 25 | void initializeArray() { 26 | a[0] = 0; 27 | f[0] = 0; 28 | a[1] = 1; 29 | f[1] = 1; 30 | FOR(i,2,N) { 31 | a[i] = a[i/2] + i%2 * a[i/2+1]; 32 | f[i] = max(f[i-1], a[i]); 33 | } 34 | } 35 | 36 | int main() { 37 | // freopen("INP.TXT", "r", stdin); 38 | // freopen("OUT.TXT", "w", stdout); 39 | 40 | initializeArray(); 41 | 42 | cin >> T; 43 | FOR(i,1,T) { 44 | scanf("%d", &n); 45 | printf("%d\n", f[n]); 46 | } 47 | 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/MAXCUB.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 31, inf = 1e9; 22 | int T, n, F[N][N][N], ans; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &T); 29 | while (T--) { 30 | scanf("%d", &n); 31 | FOR(i,1,n) FOR(j,1,n) FOR(k,1,n) { 32 | scanf("%d", &F[i][j][k]); 33 | F[i][j][k] += F[i-1][j][k] + F[i][j-1][k] + F[i][j][k-1] 34 | - F[i-1][j-1][k] - F[i-1][j][k-1] - F[i][j-1][k-1] 35 | + F[i-1][j-1][k-1]; 36 | } 37 | 38 | ans = -inf; 39 | 40 | FOR(i,1,n) FOR(j,1,n) FOR(k,1,n) { 41 | int lim = min(i,min(j,k)); 42 | FOR(t,1,lim) { 43 | int sum = F[i][j][k] 44 | - F[i-t][j][k] - F[i][j-t][k] - F[i][j][k-t] 45 | + F[i][j-t][k-t] + F[i-t][j][k-t] + F[i-t][j-t][k] 46 | - F[i-t][j-t][k-t]; 47 | ans = max(ans, sum); 48 | } 49 | } 50 | 51 | printf("%d\n", ans); 52 | } 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/MBEEWALK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int dx[] = {-1,-1,0,0,1,1}; 22 | int dy[2][6] = {{-1,0,-1,1,-1,0}, {0,1,-1,1,0,1}}; 23 | int r = 50, F[100][100][15], dd[100][100]; 24 | 25 | void bfs() { 26 | queue st; 27 | st.push(ii(r,r)); 28 | F[r][r][0] = 1; 29 | dd[r][r] = 1; 30 | FOR(step,1,14) { 31 | int sz = st.size(); 32 | while (sz--) { 33 | int i = st.front().X, j = st.front().Y; 34 | st.pop(); 35 | dd[i][j] = 0; 36 | FOR(k,0,5) { 37 | int u = i + dx[k], v = j + dy[i%2][k]; 38 | F[u][v][step] += F[i][j][step-1]; 39 | st.push(ii(u,v)); 40 | } 41 | } 42 | sz = st.size(); 43 | while (sz--) { 44 | int i = st.front().X, j = st.front().Y; 45 | st.pop(); 46 | if (! dd[i][j]) 47 | st.push(ii(i,j)), dd[i][j] = 1; 48 | } 49 | } 50 | } 51 | 52 | int main() { 53 | // freopen("INP.TXT", "r", stdin); 54 | // freopen("OUT.TXT", "w", stdout); 55 | 56 | bfs(); 57 | 58 | int T, n; 59 | cin >> T; 60 | while (T--) 61 | scanf("%d", &n), printf("%d\n", F[r][r][n]); 62 | 63 | return 0; 64 | } 65 | -------------------------------------------------------------------------------- /src/MBLAST.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 2500; 22 | int n, m, k, F[N][N]; 23 | string a, b; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | getline(cin, a); 30 | a = "#" + a; 31 | n = a.size() - 1; 32 | getline(cin,b); 33 | b = "#" + b; 34 | m = b.size() - 1; 35 | scanf("%d", &k); 36 | 37 | FOR(i,0,m) F[0][i] = i*k; 38 | FOR(i,0,n) F[i][0] = i*k; 39 | 40 | FOR(i,1,n) 41 | FOR(j,1,m) { 42 | F[i][j] = F[i-1][j-1] + abs(a[i]-b[j]); 43 | F[i][j] = min(F[i][j], F[i-1][j-1] + k*2); 44 | F[i][j] = min(F[i][j], F[i-1][j] + k); 45 | F[i][j] = min(F[i][j], F[i][j-1] + k); 46 | } 47 | 48 | printf("%d\n", F[n][m]); 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/MCARDS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500; 22 | int c, n, ans, a[N], s[N]; 23 | int b[6], dd[6], deg[6]; 24 | ii x[N]; 25 | 26 | void solve() { 27 | FOR(i,1,c) deg[b[i]] = i; 28 | FOR(i,1,n) a[i] = deg[x[i].X] * 1000 + x[i].Y; 29 | int k = 1; 30 | s[1] = a[1]; 31 | FOR(i,2,n) { 32 | int j = k; 33 | while (j > 0 && a[i] <= s[j]) j--; 34 | if (j == k) s[++k] = a[i]; 35 | s[j+1] = min(s[j+1], a[i]); 36 | } 37 | ans = min(ans, n-k); 38 | } 39 | 40 | void dq(int k) { 41 | if (k == c+1) solve(); 42 | else FOR(i,1,c) 43 | if (!dd[i]) { 44 | dd[i] = 1; 45 | b[k] = i; 46 | dq(k+1); 47 | dd[i] = 0; 48 | } 49 | } 50 | 51 | int main() { 52 | // freopen("INP.TXT", "r", stdin); 53 | // freopen("OUT.TXT", "w", stdout); 54 | 55 | scanf("%d%d", &c,&n); 56 | n *= c; 57 | FOR(i,1,n) scanf("%d%d", &x[i].X, &x[i].Y); 58 | ans = n; 59 | dq(1); 60 | printf("%d\n", ans); 61 | 62 | return 0; 63 | } 64 | -------------------------------------------------------------------------------- /src/MCOINS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n[100],m,k,l,f[1000001],maxn; 22 | 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d%d",&k,&l,&m); 29 | for (int i=1; i<=m; i++) { 30 | scanf("%d",&n[i]); 31 | maxn = max(n[i],maxn); 32 | } 33 | for (int i=1; i<=maxn; i++) { 34 | if (i-1 >= 0 and f[i-1] == 0) f[i] = 1; 35 | if (i-k >= 0 and f[i-k] == 0) f[i] = 1; 36 | if (i-l >= 0 and f[i-l] == 0) f[i] = 1; 37 | } 38 | for (int i=1; i<=m; i++) 39 | if (f[n[i]] == 1) printf("A"); 40 | else printf("B"); 41 | 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /src/MDIGITS2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, res; 22 | string a, m; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &n); 29 | m = to_string(n); 30 | FOR(i,1,n) a.append(to_string(i)); 31 | 32 | res = a.find(m) + 1; 33 | printf("%d\n", res); 34 | 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /src/MDOLLS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 20010; 22 | int T, n, s[N]; 23 | ii a[N]; 24 | 25 | bool cmp(ii u, ii v) { 26 | return u.X < v.X || (u.X == v.X && u.Y > v.Y); 27 | } 28 | 29 | int main() { 30 | // freopen("INP.TXT", "r", stdin); 31 | // freopen("OUT.TXT", "w", stdout); 32 | 33 | scanf("%d", &T); 34 | while (T--) { 35 | scanf("%d", &n); 36 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 37 | sort(a+1, a+n+1, cmp); 38 | int k = 1; 39 | s[1] = a[1].Y; 40 | FOR(i,2,n) { 41 | int j = k; 42 | while (j > 0 && a[i].Y > s[j]) j--; 43 | if (j == k) s[++k] = a[i].Y; 44 | s[j+1] = max(s[j+1], a[i].Y); 45 | } 46 | printf("%d\n", k); 47 | } 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/MINK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 20000; 22 | int T, n, k, a[N]; 23 | deque st; 24 | 25 | void push(int x) { 26 | while (!st.empty() && x < st.back()) st.pop_back(); 27 | st.push_back(x); 28 | } 29 | 30 | void solve() { 31 | scanf("%d%d", &n,&k); 32 | FOR(i,1,n) scanf("%d", &a[i]); 33 | st = deque {}; 34 | FOR(i,1,k-1) push(a[i]); 35 | FOR(i,k,n) { 36 | push(a[i]); 37 | printf("%d ", st.front()); 38 | if (a[i-k+1] == st.front()) st.pop_front(); 39 | } 40 | EL; 41 | } 42 | 43 | 44 | int main() { 45 | // freopen("INP.TXT", "r", stdin); 46 | // freopen("OUT.TXT", "w", stdout); 47 | 48 | cin >> T; 49 | while (T--) solve(); 50 | 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/MMASS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | string s; 22 | stack st; 23 | map val; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> s; 30 | 31 | val['C'] = 12; 32 | val['H'] = 1; 33 | val['O'] = 16; 34 | val['('] = -1; 35 | val[')'] = 0; 36 | 37 | for (int i = 0; i < s.size(); i++) { 38 | if (s[i] == '(') { 39 | st.push(val[s[i]]); 40 | } else if (s[i] == ')') { 41 | int v = val[')'], total = 0; 42 | while (v != val['(']) { 43 | v = st.top(); 44 | st.pop(); 45 | if (v != val['(']) total += v; 46 | } 47 | st.push(total); 48 | } else if (s[i] == 'C' || s[i] == 'H' || s[i] == 'O') { 49 | st.push(val[s[i]]); 50 | } else { // 2 -> 9 51 | int v = st.top(); 52 | st.pop(); 53 | st.push(v * (int)(s[i] - '0')); 54 | } 55 | } 56 | 57 | int res = 0; 58 | while (!st.empty()) { 59 | res += st.top(); 60 | st.pop(); 61 | } 62 | 63 | cout << res << endl; 64 | 65 | return 0; 66 | } 67 | -------------------------------------------------------------------------------- /src/MMAXPER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1000; 22 | int n, a[N], b[N], F[N][2]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | cin >> n; 29 | FOR(i,1,n) scanf("%d%d",a+i,b+i); 30 | 31 | F[1][0] = a[1]; 32 | F[1][1] = b[1]; 33 | FOR(i,2,n) { 34 | F[i][0] = max(F[i-1][0] + a[i] + abs(b[i]-b[i-1]), F[i-1][1] + a[i] + abs(b[i]-a[i-1])); 35 | F[i][1] = max(F[i-1][0] + b[i] + abs(a[i]-b[i-1]), F[i-1][1] + b[i] + abs(a[i]-a[i-1])); 36 | } 37 | 38 | printf("%d\n", max(F[n][0], F[n][1])); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/MMMGAME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | int t, n, x, z, cnt; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &t); 30 | while (t--) { 31 | z = 0; 32 | cnt = 0; 33 | scanf("%d", &n); 34 | for (int i=1; i<=n; i++) { 35 | scanf("%d", &x); 36 | if (x == 1) cnt++; 37 | z = z ^ x; 38 | } 39 | if (cnt == n) { 40 | if (n%2 == 0) 41 | printf("John\n"); 42 | else 43 | printf("Brother\n"); 44 | } else { 45 | if (z > 0) 46 | printf("John\n"); 47 | else 48 | printf("Brother\n"); 49 | } 50 | } 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/MNERED.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500; 22 | int n, m, a[N][N], f[N][N], res = N*N; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d",&n,&m); 29 | for (int i=1,u,v; i<=m; i++) { 30 | scanf("%d%d", &u,&v); 31 | a[u][v] = 1; 32 | } 33 | 34 | for (int j=1; j<=n; j++) 35 | for (int i=1; i<=n; i++) 36 | f[i][j] = f[i-1][j] + a[i][j]; 37 | 38 | for (int i=1; i<=n; i++) 39 | for (int l=1; l<=n; l++) { 40 | for (int r=l; r<=n; r++) { 41 | int ngang = r-l+1; 42 | int doc = m/ngang; 43 | if (m%ngang != 0 or doc <= 0 or i+doc-1 > n) continue; 44 | 45 | int sum = 0; 46 | for (int k=l; k<=r; k++) 47 | sum += f[i+doc-1][k] - f[i-1][k]; 48 | 49 | res = min(res, m-sum); 50 | } 51 | } 52 | 53 | printf("%d", res); 54 | 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /src/MPILOT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 10001; 22 | int n, a[N], b[N], F[2][N]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &n); 29 | FOR(i,1,n) scanf("%d%d", &a[i], &b[i]); 30 | F[1][1] = b[1]; 31 | FOR(i,2,n) { 32 | int M = min(i,n/2), ii = i%2; 33 | F[ii][0] = F[1-ii][1] + a[i]; 34 | F[ii][M] = F[1-ii][M-1] + b[i]; 35 | FOR(j,1,M-1) 36 | F[ii][j] = min(F[1-ii][j-1] + b[i], F[1-ii][j+1] + a[i]); 37 | } 38 | printf("%d\n", F[0][0]); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/MRECAMAN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500010; 22 | int n, a[N]; 23 | set b; 24 | set ::iterator it; 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | b.insert(0); 31 | a[0] = 0; 32 | for (int i=1; i<=N; i++) { 33 | int k = a[i-1] - i; 34 | if (k > 0) { 35 | it = b.find(k); 36 | if (it != b.end()) { 37 | a[i] = a[i-1] + i; 38 | b.insert(a[i]); 39 | } else { 40 | a[i] = k; 41 | b.insert(k); 42 | } 43 | } else { 44 | a[i] = a[i-1] + i; 45 | b.insert(a[i]); 46 | } 47 | } 48 | 49 | while (1) { 50 | scanf("%d", &n); 51 | if (n == -1) break; 52 | printf("%d\n", a[n]); 53 | } 54 | 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /src/MSE07B.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct data { 22 | int k, p; 23 | bool operator < (const data &o) const { 24 | return p < o.p; 25 | } 26 | }; 27 | 28 | set st2, st3; 29 | 30 | int main() { 31 | // freopen("INP.TXT", "r", stdin); 32 | // freopen("OUT.TXT", "w", stdout); 33 | 34 | int t; 35 | for (;;) { 36 | scanf("%d", &t); 37 | if (t == 0) return 0; 38 | if (t == 1) { 39 | int k, p; 40 | scanf("%d%d", &k,&p); 41 | st2.insert({k,-p}); 42 | st3.insert({k,p}); 43 | } 44 | if (t == 2) { 45 | if (st2.empty()) puts("0"); 46 | else { 47 | data p = *st2.begin(); 48 | printf("%d\n", p.k); 49 | st3.erase({p.k,-p.p}); 50 | st2.erase(p); 51 | } 52 | } 53 | if (t == 3) { 54 | if (st3.empty()) puts("0"); 55 | else { 56 | data p = *st3.begin(); 57 | printf("%d\n", p.k); 58 | st2.erase({p.k,-p.p}); 59 | st3.erase(p); 60 | } 61 | } 62 | } 63 | 64 | return 0; 65 | } 66 | -------------------------------------------------------------------------------- /src/MSTICK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 5010; 22 | int T, n, s[N]; 23 | ii a[N]; 24 | 25 | bool cmp(ii u, ii v) { 26 | return u.X < v.X || (u.X == v.X && u.Y < v.Y); 27 | } 28 | 29 | int main() { 30 | // freopen("INP.TXT", "r", stdin); 31 | // freopen("OUT.TXT", "w", stdout); 32 | 33 | scanf("%d", &T); 34 | while (T--) { 35 | scanf("%d", &n); 36 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 37 | sort(a+1, a+n+1, cmp); 38 | int k = 1; 39 | s[1] = a[1].Y; 40 | FOR(i,2,n) { 41 | int j = k; 42 | while (j > 0 && s[j] <= a[i].Y) j--; 43 | if (j == k) s[++k] = a[i].Y; 44 | s[j+1] = max(s[j+1], a[i].Y); 45 | } 46 | printf("%d\n", k); 47 | } 48 | 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/MTREE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 100005; 22 | const ll mod = 1000000007; 23 | int n, u, v, c; 24 | ll F[N], ans = 0ll; 25 | vector a[N]; 26 | 27 | void dfs(int p, int u) { 28 | F[u] = 1ll; 29 | for (auto v : a[u]) { 30 | if (v.X == p) continue; 31 | dfs(u, v.X); 32 | F[u] = (F[u] + F[v.X] * v.Y % mod) % mod; 33 | } 34 | for (auto v : a[u]) { 35 | if (v.X == p) continue; 36 | ll T = F[v.X] * v.Y % mod; 37 | T = T * (F[u] - F[v.X] * (ll) v.Y % mod + 1 + mod) % mod; 38 | ans = (ans + T) % mod; 39 | } 40 | } 41 | 42 | int main() { 43 | // freopen("INP.TXT", "r", stdin); 44 | // freopen("OUT.TXT", "w", stdout); 45 | 46 | scanf("%d", &n); 47 | FOR(i,1,n-1) { 48 | scanf("%d%d%d", &u,&v,&c); 49 | a[u].ep(v,c); 50 | a[v].ep(u,c); 51 | } 52 | dfs(0,1); 53 | if (ans%2) ans += mod; 54 | printf("%lld\n", ans/2); 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/MULONE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1000001; 22 | int n,t,k; 23 | char res[2*N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d",&t); 30 | while (t--) { 31 | scanf("%d",&n); 32 | k = 0; 33 | for (int i=1; i<2*n; i++) { 34 | if (i <= n) 35 | k += i; 36 | else 37 | k += 2*n-i; 38 | res[2*n-i] = k % 10 + 48; 39 | k /= 10; 40 | } 41 | for (int i=1; i<2*n; i++) printf("%c",res[i]); 42 | printf("\n"); 43 | } 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/MYSTERY.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int base = 20122007; 22 | ll n,res = 1; 23 | 24 | ll g(int x) { 25 | if (x == 1) return 3; 26 | ll tmp = g(x/2) % base; 27 | if (x % 2 == 0) return (tmp*tmp) % base; 28 | return ((tmp*tmp % base)*3) % base; 29 | } 30 | 31 | ll f(int x) { 32 | return (g(x) - 1 + base) % base; 33 | } 34 | 35 | int main() { 36 | // freopen("INP.TXT", "r", stdin); 37 | // freopen("OUT.TXT", "w", stdout); 38 | 39 | scanf("%lli",&n); 40 | for (int i=1; i*i<=n; i++) { 41 | if (n % i == 0) { 42 | if (i*i == n) 43 | res = res*f(i) % base; 44 | else 45 | res = ((res*f(i) % base) * f(n/i)) % base; 46 | } 47 | } 48 | printf("%lli",res); 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/NCOB.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int res; 22 | 23 | void solve(ll x, ll y) { 24 | res = 1-res; 25 | if (x >= 2*y) return ; 26 | x -= y; 27 | if (x < y) swap(x,y); 28 | solve(x,y); 29 | } 30 | 31 | int main() { 32 | // freopen("INP.TXT", "r", stdin); 33 | // freopen("OUT.TXT", "w", stdout); 34 | 35 | ll x, y; 36 | while (scanf("%lld", &x) == 1) { 37 | scanf("%lld", &y); 38 | if (x == 0 && y == 0) return 0; 39 | res = 0; 40 | if (x < y) swap(x,y); 41 | solve(x,y); 42 | if (res == 1) printf("T\n"); 43 | else printf("S\n"); 44 | } 45 | 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/NDCCARD.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e5; 22 | int n, m, a[N], ans; 23 | ii F[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&m); 30 | FOR(i,1,n) scanf("%d", &a[i]); 31 | FOR(i,1,n) 32 | FOR(j,i+1,n) 33 | F[a[i]+a[j]] = {i,j}; 34 | m = min(m,30000); 35 | FOR(i,1,n) { 36 | FOD(j,m-a[i],0) 37 | if (F[j] != ii(0,0) && F[j].X != i && F[j].Y != i) { 38 | ans = max(ans, a[i]+j); 39 | break; 40 | } 41 | } 42 | printf("%d\n", ans); 43 | 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/NK05MNIM.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int t, n, x, z, cnt; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | scanf("%d", &t); 28 | while (t--) { 29 | z = 0; 30 | cnt = 0; 31 | scanf("%d", &n); 32 | for (int i=1; i<=n; i++) { 33 | scanf("%d", &x); 34 | if (x == 1) cnt++; 35 | z = z ^ x; 36 | } 37 | if (cnt == n) { 38 | if (n%2 == 0) 39 | printf("1\n"); 40 | else 41 | printf("-1\n"); 42 | } else { 43 | if (z > 0) 44 | printf("1\n"); 45 | else 46 | printf("-1\n"); 47 | } 48 | } 49 | 50 | 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/NKABD.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | long l,r,x,y,z,a[200000],res = 0; 22 | 23 | void edit() { 24 | for (long i=1; i<=r; i++) a[i] = 1; 25 | for (long i=2; i<=r/2; i++) 26 | for (long j=2; j<=r/i; j++) 27 | a[i*j] += i; 28 | } 29 | 30 | int main() { 31 | // freopen("INP.TXT", "r", stdin); 32 | // freopen("OUT.TXT", "w", stdout); 33 | 34 | scanf("%li%li",&l,&r); 35 | edit(); 36 | for (long i=l; i<=r; i++) 37 | if (a[i] > i) res++; 38 | printf("%li",res); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/NKBUS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int maxn = 250000,z=0; 22 | int n,m,k,t,f[maxn],a[maxn],p,x,res; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d",&n,&m); 29 | 30 | // thoi gian xe den tram i 31 | f[1] = 0; 32 | // so luong nguoi 33 | p = 0; 34 | 35 | for (int i=1; i<=n; i++) { 36 | scanf("%d%d",&t,&k); 37 | 38 | // thoi gian den tram tiep tang len t 39 | f[i+1] = f[i] + t; 40 | 41 | for (long j=p+1; j<=p+k; j++) { 42 | scanf("%d",&x); 43 | // a[j] la thoi gian xe buyt cho thang j 44 | a[j] = max(z,x-f[i]); 45 | } 46 | 47 | // tang luong nguoi len k 48 | p += k; 49 | } 50 | 51 | sort(a+1,a+p+1); 52 | 53 | res = f[n+1]+a[m]; 54 | 55 | printf("%d",res); 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/NKCABLE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 30000; 22 | const int inf = 1e9; 23 | int n, a[N], F[N][2]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &n); 30 | FOR(i,1,n-1) scanf("%d", &a[i]); 31 | F[2][1] = a[1]; 32 | F[2][0] = inf; 33 | FOR(i,3,n) { 34 | F[i][0] = F[i-1][1]; 35 | F[i][1] = min(F[i-1][0], F[i-1][1]) + a[i-1]; 36 | } 37 | 38 | printf("%d\n", F[n][1]); 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/NKCITY.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1005; 23 | const int M = 1e4+5; 24 | 25 | struct edge { 26 | int u, v, t; 27 | }; 28 | 29 | int n, m, pa[N]; 30 | edge e[M]; 31 | 32 | bool cmp(edge x, edge y) { 33 | return x.t < y.t; 34 | } 35 | 36 | int findSet(int u) { 37 | if (u == pa[u]) return u; 38 | return pa[u] = findSet(pa[u]); 39 | } 40 | 41 | void read() { 42 | cin >> n >> m; 43 | FOR(i,1,m) { 44 | scanf("%d %d %d", &e[i].u, &e[i].v, &e[i].t); 45 | } 46 | } 47 | 48 | void solve() { 49 | sort(e+1,e+m+1, cmp); 50 | FOR(i,1,n) pa[i] = i; 51 | 52 | int res = 1e9; 53 | FOR(i,1,m) { 54 | int u = findSet(e[i].u); 55 | int v = findSet(e[i].v); 56 | if (u == v) continue; 57 | pa[v] = u; 58 | res = e[i].t; 59 | } 60 | 61 | cout << res << endl; 62 | } 63 | 64 | int main() { 65 | // freopen("INP.TXT", "r", stdin); 66 | // freopen("OUT.TXT", "w", stdout); 67 | 68 | read(); 69 | solve(); 70 | 71 | 72 | return 0; 73 | } 74 | -------------------------------------------------------------------------------- /src/NKGUARD.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 705; 22 | int n, m, a[N][N], dd[N][N], ans; 23 | int dx[] = {-1,-1,-1,0,0,1,1,1}; 24 | int dy[] = {-1,0,1,-1,1,-1,0,1}; 25 | 26 | void bfs(int i, int j) { 27 | int ok = 1; 28 | queue st; 29 | st.push({i,j}); 30 | dd[i][j] = 1; 31 | while (!st.empty()) { 32 | i = st.front().X, j = st.front().Y; 33 | st.pop(); 34 | FOR(k,0,7) { 35 | int u = i + dx[k], v = j + dy[k]; 36 | if (u < 1 || u > n || v < 1 || v > m) continue; 37 | if (a[u][v] == a[i][j] && !dd[u][v]) { 38 | dd[u][v] = 1; 39 | st.push({u,v}); 40 | } 41 | if (a[u][v] > a[i][j]) ok = 0; 42 | } 43 | } 44 | ans += ok; 45 | } 46 | 47 | int main() { 48 | // freopen("INP.TXT", "r", stdin); 49 | // freopen("OUT.TXT", "w", stdout); 50 | 51 | scanf("%d%d", &n,&m); 52 | FOR(i,1,n) FOR(j,1,m) scanf("%d", &a[i][j]); 53 | 54 | FOR(i,1,n) FOR(j,1,m) if (!dd[i][j]) bfs(i,j); 55 | 56 | printf("%d\n", ans); 57 | 58 | return 0; 59 | } 60 | -------------------------------------------------------------------------------- /src/NKINV.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 60005; 22 | 23 | int n, t[N], x; 24 | ll res = 0ll; 25 | 26 | int retrieve(int x) { 27 | int ans = 0; 28 | for (; x0; x-=x&-x) t[x]++; 34 | } 35 | 36 | int main() { 37 | // freopen("INP.TXT", "r", stdin); 38 | // freopen("OUT.TXT", "w", stdout); 39 | 40 | cin >> n; 41 | FOR(i,1,n) { 42 | scanf("%d", &x); 43 | res += retrieve(x+1); 44 | update(x); 45 | } 46 | 47 | cout << res << endl; 48 | 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/NKLEAGUE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500; 22 | int n, cnt, node[N], dd[N]; 23 | vector ke[N]; 24 | char s[N]; 25 | 26 | void dfs(int u) { 27 | dd[u] = 1; 28 | for (int i=0; i 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | char s[255]; 22 | string a, b; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%s\n", &s); 29 | a = string(s); 30 | 31 | scanf("%s\n", &s); 32 | b = string(s); 33 | 34 | FOR(i,0,sz(a)) { 35 | string str = a.substr(i); 36 | if (b.find(str) == 0) { 37 | cout << sz(b) + i; 38 | break; 39 | } 40 | } 41 | 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /src/NKMAXSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 150000; 22 | int n, a[N], p, f[N], t[N], ans; 23 | 24 | int get(int x) { 25 | int ans = n+1; 26 | for (x; x > 0; x -= x&-x) ans = min(ans, t[x]); 27 | return ans; 28 | } 29 | 30 | void upd(int x, int v) { 31 | for (x; x <= f[0]; x += x&-x) t[x] = min(t[x], v); 32 | } 33 | 34 | 35 | int main() { 36 | // freopen("INP.TXT", "r", stdin); 37 | // freopen("OUT.TXT", "w", stdout); 38 | 39 | scanf("%d%d", &n, &p); 40 | FOR(i,1,n) { 41 | scanf("%d", &a[i]); 42 | a[i] += a[i-1]; 43 | f[++f[0]] = a[i]; 44 | f[++f[0]] = a[i]-p; 45 | } 46 | f[++f[0]] = 0; 47 | f[++f[0]] = 0-p; 48 | sort(f+1, f+f[0]+1); 49 | f[0] = unique(f+1, f+f[0]+1)-f-1; 50 | FOR(i,1,f[0]) t[i] = n+1; 51 | ans = -1; 52 | FOR(j,1,n) { 53 | int x = lower_bound(f+1, f+f[0]+1, a[j-1])-f; 54 | upd(x,j); 55 | x = lower_bound(f+1, f+f[0]+1, a[j]-p)-f; 56 | int i = get(x); 57 | if (i == n+1) continue; 58 | ans = max(ans, j-i+1); 59 | } 60 | printf("%d\n", ans); 61 | 62 | return 0; 63 | } 64 | -------------------------------------------------------------------------------- /src/NKNUMFRE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int rev(int x) { 22 | int ans = 0; 23 | while (x > 0) { 24 | ans = ans*10 + x%10; 25 | x /= 10; 26 | } 27 | return ans; 28 | } 29 | 30 | int a, b, res; 31 | 32 | int main() { 33 | // freopen("INP.TXT", "r", stdin); 34 | // freopen("OUT.TXT", "w", stdout); 35 | 36 | cin >> a >> b; 37 | FOR(i,a,b) { 38 | if (__gcd(i, rev(i)) == 1) res++; 39 | } 40 | 41 | cout << res << endl; 42 | 43 | return 0; 44 | } 45 | -------------------------------------------------------------------------------- /src/NKPALIN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 2500; 22 | int n, F[N][N]; 23 | string s, ans; 24 | 25 | void solve(int i, int j, int L, int R) { 26 | if (L > R) return ; 27 | if (i == j) ans[L] = s[i]; 28 | else { 29 | if (s[i] == s[j]) { 30 | ans[L] = ans[R] = s[i]; 31 | solve(i+1, j-1, L+1, R-1); 32 | } else { 33 | if (F[i][j] == F[i+1][j]) 34 | solve(i+1, j, L, R); 35 | else 36 | solve(i, j-1, L, R); 37 | } 38 | } 39 | } 40 | 41 | int main() { 42 | // freopen("INP.TXT", "r", stdin); 43 | // freopen("OUT.TXT", "w", stdout); 44 | 45 | 46 | getline(cin, s); 47 | n = s.size()-1; 48 | FOD(i,n,0) 49 | FOR(j,i,n) { 50 | if (i == j) F[i][j] = 1; 51 | else { 52 | if (s[i] == s[j]) { 53 | if (i == j-1) 54 | F[i][j] = 2; 55 | else 56 | F[i][j] = F[i+1][j-1] + 2; 57 | } else 58 | F[i][j] = max(F[i+1][j], F[i][j-1]); 59 | } 60 | } 61 | 62 | ans.resize(F[0][n]); 63 | 64 | solve(0, n, 0, F[0][n]-1); 65 | 66 | cout << ans; 67 | 68 | return 0; 69 | } 70 | -------------------------------------------------------------------------------- /src/NKPATH.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 101, mod = 1e9; 23 | int n, m, a[N][N], F[N][N], ans; 24 | 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | 31 | scanf("%d%d", &n,&m); 32 | FOR(i,1,n) FOR(j,1,m) scanf("%d", &a[i][j]); 33 | F[1][1] = 1; 34 | FOR(i,2,n) { 35 | F[i][1] = 1; 36 | FOR(j,1,i-1) 37 | if (__gcd(a[i][1], a[j][1]) > 1) 38 | F[i][1] = (F[i][1] + F[j][1]) % mod; 39 | } 40 | FOR(i,2,m) 41 | FOR(j,1,i-1) 42 | if (__gcd(a[1][i], a[1][j]) > 1) 43 | F[1][i] = (F[1][i] + F[1][j]) % mod; 44 | FOR(j,2,m) 45 | FOR(i,2,n) 46 | FOR(p,1,i) { 47 | int Q = j == m ? m-1 : j; 48 | FOR(q,1,Q) 49 | if (ii(i,j) != ii(p,q)) 50 | if (__gcd(a[i][j], a[p][q]) > 1) 51 | F[i][j] = (F[i][j] + F[p][q]) % mod; 52 | } 53 | 54 | FOR(i,1,n) ans = (ans + F[i][m]) % mod; 55 | printf("%d", ans); 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/NKRACING.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct edge { 22 | int u, v, c; 23 | bool operator < (const edge &o) const { 24 | return c > o.c; 25 | } 26 | }; 27 | 28 | const int N = 1e5+5; 29 | int n, m, pa[N], sz[N], ans; 30 | edge e[N]; 31 | 32 | int FindSet(int u) { 33 | if (u == pa[u]) return u; 34 | return pa[u] = FindSet(pa[u]); 35 | } 36 | 37 | int main() { 38 | // freopen("INP.TXT", "r", stdin); 39 | // freopen("OUT.TXT", "w", stdout); 40 | 41 | scanf("%d%d", &n,&m); 42 | FOR(i,1,m) { 43 | scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].c); 44 | ans += e[i].c; 45 | } 46 | sort(e+1,e+m+1); 47 | FOR(i,1,n) pa[i] = i, sz[i] = 1; 48 | FOR(i,1,m) { 49 | int u = FindSet(e[i].u), v = FindSet(e[i].v); 50 | if (u == v) continue; 51 | pa[v] = u; 52 | sz[u] += sz[v]; 53 | ans -= e[i].c; 54 | } 55 | 56 | printf("%d\n", ans); 57 | 58 | return 0; 59 | } 60 | -------------------------------------------------------------------------------- /src/NKREZ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 15000; 22 | int n, F[N]; 23 | ii a[N]; 24 | 25 | bool cmp(ii u, ii v) { 26 | return u.Y < v.Y; 27 | } 28 | 29 | int search(int L, int R, int x) { 30 | int ans = 0; 31 | while (L <= R) { 32 | int mid = (L+R)/2; 33 | if (a[mid].Y <= x) { 34 | ans = mid; 35 | L = mid+1; 36 | } else 37 | R = mid-1; 38 | } 39 | return ans; 40 | } 41 | 42 | int main() { 43 | // freopen("INP.TXT", "r", stdin); 44 | // freopen("OUT.TXT", "w", stdout); 45 | 46 | scanf("%d", &n); 47 | FOR(i,1,n) scanf("%d%d", &a[i].X, &a[i].Y); 48 | sort(a+1, a+n+1, cmp); 49 | 50 | F[1] = a[1].Y - a[1].X; 51 | FOR(i,2,n) { 52 | int k = search(1,i-1,a[i].X); 53 | F[i] = max(F[i-1], F[k] + a[i].Y - a[i].X); 54 | } 55 | printf("%d\n", F[n]); 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/NKSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 100050; 22 | int n, a[N], L[N], R[N], F[N], ans; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &n); 29 | FOR(i,1,n) scanf("%d", &a[i]); 30 | 31 | L[1] = L[0] = a[1]; 32 | FOR(i,2,n) 33 | L[i] = min(L[i-1], L[0] + a[i]), L[0] += a[i]; 34 | 35 | R[n] = a[n]; 36 | FOD(i,n-1,1) 37 | R[i] = min(a[i], R[i+1] + a[i]); 38 | 39 | F[n] = a[n]; 40 | FOD(i,n-1,1) F[i] = F[i+1] + a[i]; 41 | 42 | FOR(i,1,n) 43 | if (R[i] > 0 && L[i] + F[i] > 0) ans++; 44 | 45 | printf("%d\n", ans); 46 | 47 | 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/NKSGAME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1e5+5; 23 | int n, a[N], b[N]; 24 | 25 | void update(int i, int j, int &res) { 26 | if (0 <= i && i < n && abs(a[i] + b[j]) < res) 27 | res = abs(a[i] + b[j]); 28 | } 29 | 30 | int main() { 31 | // freopen("INP.TXT", "r", stdin); 32 | // freopen("OUT.TXT", "w", stdout); 33 | 34 | scanf("%d", &n); 35 | FOR(i,0,n-1) scanf("%d", &a[i]); 36 | FOR(i,0,n-1) scanf("%d", &b[i]); 37 | 38 | sort(a, a+n); 39 | 40 | int res = abs(a[0] + b[0]); 41 | FOR(j,0,n-1) { 42 | int i = lower_bound(a, a+n, -b[j])-a; 43 | update(i, j, res); 44 | update(i-1, j, res); 45 | } 46 | 47 | printf("%d\n", res); 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/NKTEST.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | 7 | string s; 8 | ll c[2]; 9 | stack st; 10 | 11 | int main() { 12 | 13 | for (;;) { 14 | getline(cin, s); 15 | if (s == "ENDPROGRAM") break; 16 | if (s == "IF") { 17 | st.push(-1); // mark IF 18 | st.push(1); 19 | } else if (s == "ELSE") { 20 | st.push(-2); // mark ELSE 21 | st.push(1); 22 | } else if (s == "END_IF") { 23 | c[0] = c[1] = 1ll; 24 | int idx = 0; 25 | while (!st.empty()) { 26 | int top = st.top(); 27 | st.pop(); 28 | if (top == -2) { // ELSE Branch 29 | idx++; // change to IF branch 30 | } else if (top == -1) { // IF Branch 31 | break; 32 | } else { 33 | c[idx] *= top; 34 | } 35 | } 36 | int top = c[0] + c[1]; 37 | if (!st.empty()) { 38 | top *= st.top(); 39 | st.pop(); 40 | } 41 | st.push(top); 42 | } 43 | } 44 | 45 | if (!st.empty()) cout << st.top(); else cout << 1; 46 | 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /src/NKTICK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 65000; 22 | const int inf = N * 30000; 23 | int n, t[N], r[N], F[N][2]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | 30 | scanf("%d", &n); 31 | FOR(i,1,n) scanf("%d", &t[i]); 32 | FOR(i,1,n-1) scanf("%d", &r[i]); 33 | F[1][0] = inf; 34 | F[1][1] = t[1]; 35 | F[2][0] = r[1]; 36 | F[2][1] = t[1] + t[2]; 37 | FOR(i,3,n) { 38 | F[i][0] = F[i-1][1] - t[i-1] + r[i-1]; 39 | F[i][1] = min(F[i-1][0], F[i-1][1]) + t[i]; 40 | } 41 | printf("%d\n", min(F[n][0], F[n][1])); 42 | 43 | return 0; 44 | } 45 | -------------------------------------------------------------------------------- /src/NKTREE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int a[55000],n,x,y,z; 22 | 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | while (scanf("%d",&x) == 1) { 29 | n++; 30 | a[n] = x; 31 | } 32 | for (int i=1; i<=n-2; i++) { 33 | x = a[i]; 34 | y = a[i+1]; 35 | z = a[i+2]; 36 | if (y < x) { 37 | if (z < y) continue; 38 | if (z < x) continue; 39 | printf("NO"); 40 | return 0; 41 | } else { 42 | if (y < z) continue; 43 | if (x < z) continue; 44 | printf("NO"); 45 | return 0; 46 | } 47 | } 48 | printf("YES"); 49 | 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/NOTE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | ll n, k; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | while (1) { 28 | scanf("%lld%lld", &n,&k); 29 | if (n == 0 and k == 0) break; 30 | while (k%2 == 0) n--, k /= 2; 31 | if (n == 1) 32 | printf("D\n"); 33 | else if (k%4 == 1) 34 | printf("U\n"); 35 | else 36 | printf("D\n"); 37 | } 38 | 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /src/NTTREE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 10005; 22 | int n, u, v, c, sz[N]; 23 | ll F[N], ans; 24 | vector a[N]; 25 | 26 | void dfs(int p, int u) { 27 | sz[u] = 1; 28 | for (auto v : a[u]) { 29 | if (v.X == p) continue; 30 | dfs(u, v.X); 31 | sz[u] += sz[v.X]; 32 | } 33 | for (auto v : a[u]) { 34 | if (v.X == p) continue; 35 | F[u] += F[v.X] + (ll) v.Y * sz[v.X]; 36 | ans += F[v.X] * (ll)(sz[u] - sz[v.X]); 37 | ans += (ll) v.Y * sz[v.X] * (sz[u] - sz[v.X]); 38 | } 39 | } 40 | 41 | int main() { 42 | // freopen("INP.TXT", "r", stdin); 43 | // freopen("OUT.TXT", "w", stdout); 44 | 45 | scanf("%d", &n); 46 | FOR(i,1,n-1) { 47 | scanf("%d%d%d", &u,&v,&c); 48 | ++u; 49 | ++v; 50 | a[u].ep(v,c); 51 | a[v].ep(u,c); 52 | } 53 | dfs(0,1); 54 | printf("%lld\n", ans); 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/OPTCUT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 3000, oo = 100000000; 22 | int n; 23 | ll f[N][N], a[N], s[N][N]; 24 | 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d", &n); 31 | for (int i=1; i<=n; i++) { 32 | scanf("%d", &a[i]); 33 | a[i] += a[i-1]; 34 | } 35 | 36 | for (int i=1; i<=n; i++) s[i][i] = i; 37 | 38 | for (int j=2; j<=n; j++) 39 | for (int i=j-1; i>0; i--) { 40 | f[i][j] = oo; 41 | for (int k=s[i][j-1]; k<=s[i+1][j]; k++) { 42 | if (f[i][j] > f[i][k] + f[k+1][j] + a[j]-a[i-1]) { 43 | f[i][j] = f[i][k] + f[k+1][j] + a[j]-a[i-1]; 44 | s[i][j] = k; 45 | } 46 | } 47 | } 48 | 49 | printf("%lld", f[1][n]); 50 | 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/ORDERSET.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | template 22 | using order_set = tree, rb_tree_tag, tree_order_statistics_node_update>; 23 | 24 | int n, x; 25 | char c; 26 | order_set s; 27 | 28 | int main() { 29 | // freopen("INP.TXT", "r", stdin); 30 | // freopen("OUT.TXT", "w", stdout); 31 | 32 | scanf("%d\n", &n); 33 | while (n--) { 34 | scanf("%c %d\n", &c, &x); 35 | if (c == 'I') s.insert(x); 36 | else if (c == 'D') s.erase(x); 37 | else if (c == 'K') { 38 | if (x > s.size()) puts("invalid\n"); 39 | else printf("%d\n", *s.find_by_order(x-1)); 40 | } else 41 | printf("%d\n", s.order_of_key(x)); 42 | } 43 | 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/PARIGAME.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 600; 22 | int n, t, f[N][N], a[N][N], h[N][N], c[N][N]; 23 | 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &t); 30 | while (t--) { 31 | scanf("%d", &n); 32 | for (int i=1; i<=n; i++) 33 | for (int j=1; j<=n; j++) 34 | scanf("%d", &a[i][j]), a[i][j] %= 2; 35 | 36 | memset(f, 0, sizeof f); 37 | memset(h, 0, sizeof h); 38 | memset(c, 0, sizeof c); 39 | 40 | for (int i=1; i<=n; i++) { 41 | for (int j=1; j<=n; j++) { 42 | h[i][j] = (h[i][j-1] + a[i][j]) % 2; 43 | c[j][i] = (c[j][i-1] + a[i][j]) % 2; 44 | } 45 | } 46 | 47 | for (int i=1; i<=n; i++) 48 | for (int j=1; j<=n; j++) 49 | f[i][j] = (!f[i-1][j] and !h[i][j] or (!f[i][j-1] and !c[j][i])); 50 | 51 | if (f[n][n]) 52 | printf("YES\n"); 53 | else 54 | printf("NO\n"); 55 | } 56 | 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/PATULJCI.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 3e5+5; 22 | int n, c, a[N], q, l, r; 23 | vector f[N]; 24 | 25 | int Random() { 26 | int a = rand()%5000; 27 | int b = rand()%5000; 28 | return a*5000+b; 29 | } 30 | 31 | int main() { 32 | // freopen("INP.TXT", "r", stdin); 33 | // freopen("OUT.TXT", "w", stdout); 34 | 35 | cin >> n >> c; 36 | FOR(i,1,n) scanf("%d", &a[i]), f[a[i]].pb(i); 37 | 38 | cin >> q; 39 | while (q--) { 40 | scanf("%d%d", &l,&r); 41 | int ok = 0; 42 | FOR(i,1,25) { 43 | c = a[l+Random()%(r-l+1)]; 44 | int L = lower_bound(f[c].begin(),f[c].end(),l)-f[c].begin(); 45 | int R = upper_bound(f[c].begin(),f[c].end(),r)-f[c].begin(); 46 | if (R-L > (r-l+1)/2) { 47 | ok = 1; 48 | break; 49 | } 50 | } 51 | if (ok) printf("yes %d\n", c); 52 | else puts("no"); 53 | } 54 | 55 | return 0; 56 | } 57 | -------------------------------------------------------------------------------- /src/PBCGANGS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1001; 22 | int n, m, u, v, pa[N], sz[N], thu[N]; 23 | char c; 24 | 25 | int FindSet(int u) { 26 | if (u == pa[u]) return u; 27 | return pa[u] = FindSet(pa[u]); 28 | } 29 | 30 | void Union(int u, int v) { 31 | u = FindSet(u); 32 | v = FindSet(v); 33 | pa[v] = u; 34 | sz[u] += sz[v]; 35 | } 36 | 37 | int main() { 38 | // freopen("INP.TXT", "r", stdin); 39 | // freopen("OUT.TXT", "w", stdout); 40 | 41 | scanf("%d%d\n", &n,&m); 42 | FOR(i,1,n) pa[i] = i, sz[i] = 1; 43 | FOR(i,1,m) { 44 | scanf("%c%d%d\n", &c,&u,&v); 45 | if (c == 'F') Union(u,v); 46 | else { 47 | if (thu[v]) Union(u, thu[v]); 48 | if (thu[u]) Union(thu[u], v); 49 | thu[u] = v; 50 | thu[v] = u; 51 | } 52 | } 53 | int ans = 0; 54 | FOR(i,1,n) ans += pa[i] == i; 55 | printf("%d\n", ans); 56 | 57 | 58 | return 0; 59 | } 60 | -------------------------------------------------------------------------------- /src/PBCSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct data { 22 | int a; 23 | int b; 24 | }; 25 | 26 | const int N = 150000, oo = 1000001; 27 | int n, res, s[N]; 28 | data a[N]; 29 | 30 | bool cmp(const data u, const data v) { 31 | return (u.b > v.b or (u.b == v.b and u.a < v.a)); 32 | } 33 | 34 | int main() { 35 | // freopen("INP.TXT", "r", stdin); 36 | // freopen("OUT.TXT", "w", stdout); 37 | 38 | scanf("%d", &n); 39 | for (int i=1; i<=n; i++) scanf("%d%d", &a[i].a, &a[i].b); 40 | sort(a+1,a+n+1,cmp); 41 | res = 1; 42 | s[1] = a[1].a; 43 | for (int i=2; i<=n; i++) { 44 | int j = res; 45 | while (j > 0 and s[j] > a[i].a) j--; 46 | if (j ==res) s[++res] = oo; 47 | s[j+1] = min(s[j+1], a[i].a); 48 | } 49 | printf("%d", res); 50 | 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/PNUMBER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | long l,r,x,y,z,a[300000]; 22 | 23 | void edit() { 24 | a[1] = 1; 25 | long i = 2, x = sqrt(r); 26 | while (i <= x) { 27 | long j = i + i; 28 | while (j <= r) { 29 | a[j] = 1; 30 | j += i; 31 | } 32 | i++; 33 | while (a[i] == 1) i++; 34 | } 35 | } 36 | 37 | int main() { 38 | // freopen("INP.TXT", "r", stdin); 39 | // freopen("OUT.TXT", "w", stdout); 40 | 41 | scanf("%li%li",&l,&r); 42 | edit(); 43 | for (long i=l; i<=r; i++) 44 | if (a[i] == 0) printf("%li\n",i); 45 | 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/POST.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int a, b; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | cin >> a >> b; 28 | cout << a + b << endl; 29 | 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/POST3.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int a, b; 22 | 23 | int main() { 24 | // freopen("INP.TXT", "r", stdin); 25 | // freopen("OUT.TXT", "w", stdout); 26 | 27 | cin >> a >> b; 28 | cout << a + b << endl; 29 | 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/POTATO.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, res[10] = {0,1,0,1,1}; 22 | char s[100]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | while (1) { 29 | scanf("%s\n", &s); 30 | if (s[strlen(s)-2] == 'D') break; 31 | scanf("%d\n\n", &n); 32 | if (res[n%5] == 0) 33 | printf("Hanako\n"); 34 | else 35 | printf("Taro\n"); 36 | } 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/PTQMSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500000; 22 | const ll inf = 70000ll*(ll)N; 23 | int n, a[N]; 24 | ll S, sum, ans = -inf; 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d\n", &n); 31 | FOR(i,1,n) scanf("%d", &a[i]), S += (ll)a[i]; 32 | 33 | int i = 1; 34 | 35 | FOR(j,1,n) { 36 | sum += (ll)a[j]; 37 | ans = max(ans, j-i+1 == n ? ans : sum); 38 | if (sum < 0) sum = 0ll, i = j+1; 39 | } 40 | 41 | sum = 0ll; 42 | i = 1; 43 | FOR(j,1,n) { 44 | sum += (ll)a[j]; 45 | ans = max(ans, j-i+1 == n ? ans : S-sum); 46 | if (sum > 0) sum = 0ll, i = j+1; 47 | } 48 | 49 | printf("%lld\n", ans); 50 | 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/PTRANG.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 6005; 23 | int n, L, a[N], f[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> n >> L; 30 | FOR(i,1,n) scanf("%d", &a[i]); 31 | 32 | FOR(i,1,n) { 33 | f[i] = L+1; 34 | int j = i, S = a[i]; 35 | while (j > 0 && S <= L) { 36 | f[i] = min(f[i], max(f[j-1], L-S)); 37 | S += a[--j]; 38 | } 39 | } 40 | 41 | cout << f[n] << endl; 42 | 43 | return 0; 44 | } 45 | -------------------------------------------------------------------------------- /src/PWALK.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1001; 22 | int n, q, u, v, c; 23 | vector a[N]; 24 | 25 | void dfs(int p, int u, int t, int val) { 26 | if (u == t) { 27 | c = val; 28 | return ; 29 | } 30 | for (auto k : a[u]) { 31 | int v = k.X, c = k.Y; 32 | if (v == p) continue; 33 | dfs(u, v, t, val + c); 34 | } 35 | } 36 | 37 | int main() { 38 | // freopen("INP.TXT", "r", stdin); 39 | // freopen("OUT.TXT", "w", stdout); 40 | 41 | scanf("%d%d", &n,&q); 42 | FOR(i,1,n-1) { 43 | scanf("%d%d%d", &u,&v,&c); 44 | a[u].pb({v,c}); 45 | a[v].pb({u,c}); 46 | } 47 | 48 | while (q--) { 49 | scanf("%d%d", &u,&v); 50 | dfs(0, u, v, 0); 51 | printf("%d\n", c); 52 | } 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/PYRAMID2.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1500000; 23 | int n, a[N], delay, m, l, r; 24 | char c[N]; 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | scanf("%d\n", &n); 31 | scanf("%s\n", &c); 32 | 33 | l = 0; 34 | while (l < n and c[l] == '<') l++, m++; 35 | while (l < n and c[l] == '>') l++; 36 | if (l == n) { 37 | printf("0"); 38 | return 0; 39 | } 40 | 41 | r = n-1; 42 | while (r >= 0 and c[r] == '>') r--; 43 | if (r == -1) { 44 | printf("0"); 45 | return 0; 46 | } 47 | 48 | m++; 49 | for (int i=l+1; i<=r; i++) { 50 | if (c[i] == '<') { 51 | m++; 52 | delay++; 53 | if (delay < 0) delay = 0; 54 | } else 55 | delay--; 56 | } 57 | 58 | printf("%d", r+1 - m + delay); 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/QBDIVSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 100100; 23 | int n, a[N], s[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d", &n); 30 | FOR(i,1,n) scanf("%d", a+i); 31 | int k = 1; 32 | s[1] = a[1]; 33 | FOR(i,2,n) { 34 | int j = k; 35 | while (j > 0 && s[j] <= a[i]) j--; 36 | if (j == k) s[++k] = a[i]; 37 | s[j+1] = max(s[j+1], a[i]); 38 | } 39 | printf("%d\n", k); 40 | 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/QBHEAP.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | priority_queue st; 22 | char c; 23 | int x; 24 | vector a; 25 | vector::iterator it; 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | while (scanf("%c", &c) != EOF) { 32 | if (c == '+') { 33 | scanf("%d\n", &x); 34 | if (st.size() < 15000) st.push(x); 35 | } else { 36 | scanf("\n"); 37 | if (!st.empty()) { 38 | int x = st.top(); 39 | while (!st.empty() && st.top() == x) st.pop(); 40 | } 41 | } 42 | } 43 | 44 | while (!st.empty()) a.push_back(st.top()), st.pop(); 45 | 46 | it = unique(a.begin(), a.end()); 47 | a.resize(distance(a.begin(), it)); 48 | 49 | cout << a.size() << endl; 50 | for (auto x : a) printf("%d\n", x); 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/QBMAX.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 150, inf = N*N*N;; 23 | int n, m, F[N][N], a[N][N], ans = -inf; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&m); 30 | FOR(i,1,m) F[0][i] = F[n+1][i] = -inf; 31 | FOR(i,1,n) FOR(j,1,m) scanf("%d", &a[i][j]); 32 | FOR(j,1,m) 33 | FOR(i,1,n) 34 | F[i][j] = a[i][j] + max(F[i-1][j-1], max(F[i][j-1], F[i+1][j-1])); 35 | FOR(i,1,n) ans = max(ans, F[i][m]); 36 | printf("%d", ans); 37 | 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/QBMSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | int n, a[20000], res, i, tmp, trace; 23 | 24 | bool kt(int x) { 25 | int del = 1+8*x; 26 | int can = sqrt(del); 27 | if (can*can == del and (-1+can)%2 == 0 and (-1+can) != 0) 28 | return true; 29 | return false; 30 | } 31 | 32 | int main() { 33 | // freopen("INP.TXT", "r", stdin); 34 | // freopen("OUT.TXT", "w", stdout); 35 | 36 | scanf("%d",&n); 37 | for (int i=1; i<=n; i++) scanf("%d",&a[i]); 38 | i = 1; 39 | while (i <= n) { 40 | if (kt(a[i])) { 41 | tmp = 0; 42 | while (i <= n and kt(a[i])) { 43 | tmp++; 44 | if (i == n or a[i+1] < a[i]) { 45 | i++; 46 | break; 47 | } 48 | i++; 49 | } 50 | res = max(res,tmp); 51 | } else 52 | i++; 53 | } 54 | printf("%d",res); 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/QBMST.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 10005; 23 | const int M = 15005; 24 | 25 | struct edge { 26 | int u, v, t; 27 | }; 28 | 29 | int n, m, pa[N]; 30 | edge e[M]; 31 | 32 | bool cmp(edge x, edge y) { 33 | return x.t < y.t; 34 | } 35 | 36 | int findSet(int u) { 37 | if (u == pa[u]) return u; 38 | return pa[u] = findSet(pa[u]); 39 | } 40 | 41 | void read() { 42 | cin >> n >> m; 43 | FOR(i,1,m) { 44 | scanf("%d %d %d", &e[i].u, &e[i].v, &e[i].t); 45 | } 46 | } 47 | 48 | void solve() { 49 | sort(e+1,e+m+1, cmp); 50 | FOR(i,1,n) pa[i] = i; 51 | 52 | ll res = 0ll; 53 | FOR(i,1,m) { 54 | int u = findSet(e[i].u); 55 | int v = findSet(e[i].v); 56 | if (u == v) continue; 57 | pa[v] = u; 58 | res += (ll) e[i].t; 59 | } 60 | 61 | cout << res << endl; 62 | } 63 | 64 | int main() { 65 | // freopen("INP.TXT", "r", stdin); 66 | // freopen("OUT.TXT", "w", stdout); 67 | 68 | read(); 69 | solve(); 70 | 71 | 72 | return 0; 73 | } 74 | -------------------------------------------------------------------------------- /src/QBPOINT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 2005; 23 | int n, x[N], y[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> n; 30 | FOR(i,1,n) scanf("%d%d", &x[i], &y[i]); 31 | 32 | ll ans = 0ll; 33 | FOR(i,1,n) { 34 | vector st; 35 | int cnt = 0; 36 | FOR(j,1,n) 37 | if (x[j] != x[i]) 38 | st.pb((double) (y[j]-y[i]) / (x[j]-x[i])); 39 | else 40 | cnt++; 41 | sort(st.begin(), st.end()); 42 | ll res = (ll)(cnt-1) * (cnt-2); 43 | if (st.size()) { 44 | double cur = st[0]; 45 | int p = 0; 46 | FOR(j,0,st.size()-1) { 47 | if (st[j] == cur) p++; 48 | else { 49 | res += p*(p-1); 50 | p = 1; 51 | cur = st[j]; 52 | } 53 | } 54 | res += p * (p-1); 55 | } 56 | ans += res; 57 | } 58 | 59 | cout << ans/6; 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/QBRECT.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1005; 22 | int n, m, a[N], h[N], L[N], R[N], ans; 23 | stack st; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&m); 30 | FOR(i,1,n) { 31 | FOR(j,1,m) scanf("%d", &a[j]); 32 | FOR(j,1,m) 33 | h[j] = a[j] == 1 ? h[j] + 1 : 0; 34 | 35 | st = stack {}; 36 | FOR(j,1,m) { 37 | while (! st.empty() && h[j] <= h[st.top()]) st.pop(); 38 | L[j] = st.empty() ? 1 : st.top() + 1; 39 | st.push(j); 40 | } 41 | 42 | st = stack {}; 43 | FOD(j,m,1) { 44 | while (! st.empty() && h[j] <= h[st.top()]) st.pop(); 45 | R[j] = st.empty() ? m : st.top() - 1; 46 | st.push(j); 47 | } 48 | 49 | FOR(j,1,m) 50 | ans = max(ans, h[j] * (R[j] - L[j] + 1)); 51 | } 52 | 53 | printf("%d\n", ans); 54 | 55 | 56 | return 0; 57 | } 58 | -------------------------------------------------------------------------------- /src/QBSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500; 22 | const int inf = 1e9+7; 23 | int n, k, a[N], F[N][55]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&k); 30 | FOR(i,1,n) scanf("%d", &a[i]), a[i] %= k; 31 | FOR(i,1,k-1) F[1][i] = -inf; 32 | F[1][a[1]] = 1; 33 | FOR(i,2,n) 34 | FOR(j,0,k-1) 35 | F[i][j] = max(F[i-1][j], F[i-1][(j-a[i]+k)%k] + 1); 36 | printf("%d\n", F[n][0]); 37 | 38 | 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /src/QBSQUARE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1005; 22 | int n, m, a[N][N], F[N][N], ans = 1; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | cin >> n >> m; 29 | FOR(i,1,n) FOR(j,1,m) scanf("%d", &a[i][j]); 30 | 31 | FOR(j,1,m) F[1][j] = 1; 32 | FOR(i,1,n) F[i][1] = 1; 33 | 34 | FOR(i,2,n) 35 | FOR(j,2,m) { 36 | if (a[i][j] == a[i-1][j] && a[i][j] == a[i][j-1] && a[i][j] == a[i-1][j-1]) 37 | F[i][j] = min(F[i-1][j], min(F[i][j-1], F[i-1][j-1])) + 1; 38 | else 39 | F[i][j] = 1; 40 | ans = max(ans, F[i][j]); 41 | } 42 | 43 | cout << ans; 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/QBSTR.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1500; 22 | string a, b; 23 | int F[N][N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | getline(cin, a); 30 | getline(cin, b); 31 | FOR(i,0,a.size()-1) 32 | FOR(j,0,b.size()-1) 33 | if (a[i] == b[j]) 34 | F[i+1][j+1] = F[i][j] + 1; 35 | else 36 | F[i+1][j+1] = max(F[i][j+1], F[i+1][j]); 37 | printf("%d\n", F[a.size()][b.size()]); 38 | 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/QBTICKET.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e5+5; 22 | const ll inf = 1e18; 23 | int n, L[4], C[4], p[4], S, T; 24 | ll s[N], F[N]; 25 | 26 | 27 | int main() { 28 | // freopen("INP.TXT", "r", stdin); 29 | // freopen("OUT.TXT", "w", stdout); 30 | 31 | FOR(i,1,3) cin >> L[i]; 32 | FOR(i,1,3) cin >> C[i]; 33 | cin >> n >> S >> T; 34 | FOR(i,2,n) scanf("%lld", &s[i]); 35 | 36 | FOR(i,1,3) p[i] = S; 37 | 38 | FOR(i,S+1,T) { 39 | F[i] = inf; 40 | FOD(j,3,1) { 41 | while (s[i]-s[p[j]] > L[j]) p[j]++; 42 | F[i] = min(F[i], F[p[j]] + C[j]); 43 | p[j-1] = p[j]; 44 | } 45 | } 46 | 47 | printf("%lld\n", F[T]); 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/QMAX.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 50005; 23 | int n, q, a[N], t[N<<2]; 24 | 25 | void build(int k, int l, int r) { 26 | if (l == r) { 27 | t[k] = a[l]; return; 28 | } 29 | int m = (l+r)>>1; 30 | build(k<<1, l, m); 31 | build(k*2+1, m+1, r); 32 | t[k] = max(t[k<<1], t[k*2+1]); 33 | } 34 | 35 | int findMax(int k, int l, int r, int L, int R) { 36 | if (r < L || R < l) return 0; 37 | if (L <= l && r <= R) return t[k]; 38 | int m = (l+r)>>1; 39 | return max(findMax(k<<1, l, m, L, R), findMax(k*2+1, m+1, r, L, R)); 40 | } 41 | 42 | int main() { 43 | // freopen("INP.TXT", "r", stdin); 44 | // freopen("OUT.TXT", "w", stdout); 45 | 46 | cin >> n >> q; 47 | while (q--) { 48 | int l, r, k; 49 | scanf("%d%d%d", &l, &r, &k); 50 | a[l] += k; 51 | a[r+1] -= k; 52 | } 53 | FOR(i,2,n) a[i] += a[i-1]; 54 | 55 | build(1,1,n); 56 | cin >> q; 57 | while (q--) { 58 | int l, r; 59 | scanf("%d%d", &l, &r); 60 | printf("%d\n", findMax(1,1,n,l,r)); 61 | } 62 | 63 | return 0; 64 | } 65 | -------------------------------------------------------------------------------- /src/QUAD.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n; 22 | ll res; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d", &n); 29 | if (n%2 == 0) { 30 | for (int x1=1; 2*x1 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | int n,s,d,c,t; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d",&n); 29 | for (int i=1; i 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 30005; 22 | int n, m, ans, low[N], num[N]; 23 | vector a[N]; 24 | stack st; 25 | 26 | void dfs(int p, int u) { 27 | num[u] = ++num[0]; 28 | low[u] = n+1; 29 | for (auto v : a[u]) { 30 | if (v == p) continue; 31 | if (num[v]) 32 | low[u] = min(low[u], num[v]); 33 | else { 34 | st.push({u,v}); 35 | dfs(u,v); 36 | low[u] = min(low[u], low[v]); 37 | if (low[v] >= num[u]) { 38 | int cnt = 1; 39 | for (;;) { 40 | ii k = st.top(); 41 | st.pop(); 42 | cnt++; 43 | if (k == ii(u,v)) break; 44 | } 45 | ans = max(ans, cnt); 46 | } 47 | } 48 | } 49 | } 50 | 51 | 52 | int main() { 53 | // freopen("INP.TXT", "r", stdin); 54 | // freopen("OUT.TXT", "w", stdout); 55 | 56 | scanf("%d%d", &n,&m); 57 | FOR(i,1,m) { 58 | int u, v; 59 | scanf("%d%d", &u,&v); 60 | a[u].pb(v); 61 | a[v].pb(u); 62 | } 63 | 64 | FOR(i,1,n) if (!num[i]) dfs(0,i); 65 | 66 | printf("%d\n", max(ans, 1)); 67 | 68 | return 0; 69 | } 70 | -------------------------------------------------------------------------------- /src/SEARCH.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 100010; 22 | int n, m, a[N], b[N], c[N], x[N]; 23 | int n1, n2, cnt, res, ans, t[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d%d", &n1,&n2,&n); 30 | for (int i=1,k; i<=n1; i++) { 31 | scanf("%d", &k); 32 | if (x[k] == 0) { 33 | x[k] = 1; 34 | c[++m] = k; 35 | } 36 | } 37 | 38 | for (int i=1,k; i<=n2; i++) { 39 | scanf("%d", &k); 40 | x[k] = -1; 41 | } 42 | for (int i=1; i<=n; i++) scanf("%d", &a[i]); 43 | 44 | a[n+1] = N-1; 45 | x[N-1] = -1; 46 | for (int i=1; i<=n+1; i++) { 47 | if (x[a[i]] != -1) { 48 | ans++; 49 | cnt += (x[a[i]] == 1 and t[a[i]] == 0); 50 | t[a[i]] = 1; 51 | } else { 52 | if (cnt == m) res = max(res, ans); 53 | ans = cnt = 0; 54 | for (int j=1; j<=m; j++) t[c[j]] = 0; 55 | } 56 | } 57 | printf("%d",res); 58 | 59 | return 0; 60 | } 61 | -------------------------------------------------------------------------------- /src/SETNJA.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.*; 3 | import java.lang.*; 4 | import java.math.*; 5 | import java.text.*; 6 | import java.util.Random; 7 | import java.math.BigInteger; 8 | 9 | public class Main { 10 | 11 | public static void main(String[] args) throws IOException { 12 | 13 | //BufferedReader in = new BufferedReader(new FileReader(new File("D:/java.inp"))); 14 | BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 15 | 16 | String s = in.readLine(); 17 | BigInteger F = BigInteger.valueOf(1), cnt = F; 18 | for (int i=0;i 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 15; 22 | int n, dd[N]; 23 | ll a[N], x, F[N]; 24 | 25 | void solve1() { 26 | ll ans = 1ll; 27 | FOR(i,1,n) { 28 | int cnt = 0; 29 | FOR(j,1,n) cnt += j < a[i] && !dd[j]; 30 | ans += F[n-i] * cnt; 31 | dd[a[i]] = 1; 32 | } 33 | printf("%lld\n", ans); 34 | } 35 | 36 | void solve2() { 37 | FOR(i,1,n) dd[i] = a[i] = 0; 38 | x--; 39 | FOR(i,1,n) { 40 | int ord = 0, cnt = 0; 41 | while (x >= F[n-i]) { 42 | x -= F[n-i]; 43 | ord++; 44 | } 45 | FOR(j,1,n) { 46 | if (!dd[j] && cnt == ord) { 47 | a[i] = j; 48 | dd[j] = 1; 49 | break; 50 | } 51 | if (!dd[j]) cnt++; 52 | } 53 | } 54 | FOR(i,1,n) printf("%d ", a[i]); 55 | } 56 | 57 | 58 | int main() { 59 | // freopen("INP.TXT", "r", stdin); 60 | // freopen("OUT.TXT", "w", stdout); 61 | 62 | while (scanf("%lld", &x) == 1) a[++n] = x; 63 | n--; 64 | F[0] = 1ll; 65 | FOR(i,1,n) F[i] = F[i-1] * i; 66 | solve1(); 67 | solve2(); 68 | 69 | return 0; 70 | } 71 | -------------------------------------------------------------------------------- /src/SPSEQ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 1e5+5; 23 | int n, a[N], f[N], g[N], s[N], maxL; 24 | 25 | 26 | int LIS(int i) { 27 | int l = 1, r = maxL, j = 0; 28 | while (l <= r) { 29 | int m = (l+r)/2; 30 | if (a[i] > a[s[m]]) { 31 | j = m; 32 | l = m+1; 33 | } else r = m-1; 34 | } 35 | if (j == maxL) s[++maxL] = i; 36 | if (a[i] < a[s[j+1]]) s[j+1] = i; 37 | return j; 38 | } 39 | 40 | 41 | int main() { 42 | // freopen("INP.TXT", "r", stdin); 43 | // freopen("OUT.TXT", "w", stdout); 44 | 45 | cin >> n; 46 | FOR(i,1,n) scanf("%d", &a[i]); 47 | 48 | f[1] = 1; 49 | s[1] = 1; 50 | maxL = 1; 51 | FOR(i,2,n) { 52 | int j = LIS(i); 53 | f[i] = j+1; 54 | } 55 | 56 | g[1] = 1; 57 | s[1] = n; 58 | maxL = 1; 59 | FOD(i,n-1,1) { 60 | int j = LIS(i); 61 | g[i] = j+1; 62 | } 63 | 64 | 65 | int res = 0; 66 | FOR(i,1,n) 67 | res = max(res, 2*min(f[i], g[i]) - 1); 68 | 69 | cout << res << endl; 70 | 71 | return 0; 72 | } 73 | -------------------------------------------------------------------------------- /src/STONE1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 500; 22 | int n, u, m, v, F[N], b[N]; 23 | vector a[N]; 24 | 25 | void dfs(int u) { 26 | if (a[u].size() == 0) { 27 | F[u] = 1; 28 | return ; 29 | } 30 | FOR(i, 0, a[u].size()-1) dfs(a[u][i]); 31 | FOR(i, 0, a[u].size()-1) b[i] = F[a[u][i]]; 32 | sort(b, b + a[u].size()); 33 | int du = 0; 34 | FOD(i, a[u].size()-1, 0) { 35 | if (b[i] <= du) du -= b[i]; 36 | else { 37 | F[u] += b[i] - du; 38 | du = 0; 39 | } 40 | du += b[i] - 1; 41 | } 42 | } 43 | 44 | int main() { 45 | // freopen("INP.TXT", "r", stdin); 46 | // freopen("OUT.TXT", "w", stdout); 47 | 48 | 49 | scanf("%d", &n); 50 | while (scanf("%d", &u) != EOF) { 51 | scanf("%d", &m); 52 | FOR(i,1,m) 53 | scanf("%d", &v), a[u].pb(v); 54 | } 55 | dfs(1); 56 | printf("%d", F[1]); 57 | 58 | return 0; 59 | } 60 | -------------------------------------------------------------------------------- /src/SUBSTR.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 2e6+5; 22 | int kmp[N]; 23 | string a, b, s; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | cin >> a >> b; 30 | s = b + '#' + a; 31 | 32 | kmp[0] = 0; 33 | FOR(i,1,s.size()-1) { 34 | int j = kmp[i-1]; 35 | while (j > 0 && s[j] != s[i]) j = kmp[j-1]; 36 | if (s[j] == s[i]) ++j; 37 | kmp[i] = j; 38 | } 39 | 40 | FOR(i,b.size()+1,s.size()-1) 41 | if (kmp[i] == b.size()) 42 | printf("%d ", i-2*b.size()+1); 43 | 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/TAYTRUC.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | 22 | const int N = 10009, M = 509; 23 | int n, m, a[N], f1[N][M], f2[N][M], f3[N][M]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&m); 30 | for (int i=1; i<=n; i++) scanf("%d", &a[i]); 31 | for (int i=1; i<=n; i++) { 32 | for (int j=m; j>=0; j--) { 33 | // bo qua : 1 34 | f1[i][j] = max(max(f1[i-1][j], f2[i-1][j]),f3[i-1][j]); 35 | // bo ho lo : 2 36 | if (j < m) 37 | f2[i][j] = max(max(f1[i-1][j+1], f2[i-1][j+1]), f3[i-1][j+1]); 38 | // lay ho lo : 3 39 | if (j == 1) 40 | f3[i][j] = max(f1[i-1][0], f2[i-1][0]) + a[i]; 41 | if (j > 1) 42 | f3[i][j] = f3[i-1][j-1] + a[i]; 43 | } 44 | } 45 | printf("%d", max(f1[n][0], f2[n][0])); 46 | 47 | 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/TCDFZ.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int n, A, B; 22 | 23 | void solve(int x) { 24 | if (x == 0) return ; 25 | int s = x/5; 26 | if (s > 0) A = A * (s%2 ? 4 : 6) % 10; 27 | for (int y = x; y % 5 > 0; y--) 28 | A = A * (y % 10) % 10; 29 | solve(x/5); 30 | } 31 | 32 | void calA() { 33 | A = n > 9 ? 6 : 1; 34 | FOR(i,1,n%10) if (i != 5) A = A * i % 10; 35 | solve(n/5); 36 | } 37 | 38 | void calB() { 39 | int k = 0, t = 0, F[20] = {0}; 40 | for (ll i = 5ll; i <= n; i *= 5) F[++t] = n / i; 41 | FOR(i,1,t) k += i * (F[i] - F[i+1]); 42 | B = 1; 43 | k = (k-1+4)%4 + 1; 44 | FOR(i,1,k) B = B * 2 % 10; 45 | } 46 | 47 | 48 | int main() { 49 | // freopen("INP.TXT", "r", stdin); 50 | // freopen("OUT.TXT", "w", stdout); 51 | 52 | scanf("%d", &n); 53 | if (n == 0) { 54 | puts("1"); 55 | return 0; 56 | } 57 | calA(); 58 | calB(); 59 | for (int i = 2; i <= 8; i += 2) 60 | if (B * i % 10 == A) n = i; 61 | printf("%d\n", n); 62 | 63 | return 0; 64 | } 65 | -------------------------------------------------------------------------------- /src/TJALG.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 10005, inf = N; 22 | int n, m, dd[N], num[N], low[N], ans; 23 | vector a[N]; 24 | stack st; 25 | 26 | 27 | void dfs(int u) { 28 | num[u] = ++num[0]; 29 | low[u] = inf; 30 | st.push(u); 31 | for (auto v : a[u]) if (!dd[v]) { 32 | if (num[v]) low[u] = min(low[u], num[v]); 33 | else { 34 | dfs(v); 35 | low[u] = min(low[u], low[v]); 36 | } 37 | } 38 | if (low[u] < num[u]) return; 39 | ans++; 40 | for (;;) { 41 | int k = st.top(); 42 | st.pop(); 43 | dd[k] = 1; 44 | if (k == u) return ; 45 | } 46 | } 47 | 48 | int main() { 49 | // freopen("INP.TXT", "r", stdin); 50 | // freopen("OUT.TXT", "w", stdout); 51 | 52 | scanf("%d%d", &n, &m); 53 | FOR(i,1,m) { 54 | int u, v; 55 | scanf("%d%d", &u,&v); 56 | a[u].ep(v); 57 | } 58 | FOR(u,1,n) if (!dd[u]) dfs(u); 59 | printf("%d\n", ans); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/V11WATER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int maxn = 200000; 22 | int n,a[maxn],l[maxn],r[maxn]; 23 | long long res = 0; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d",&n); 30 | for (int i=1; i<=n; i++) scanf("%d",&a[i]); 31 | for (int i=1; i<=n; i++) l[i] = max(l[i-1],a[i-1]); 32 | for (int i=n; i>=1; i--) r[i] = max(r[i+1],a[i+1]); 33 | for (int i=1; i<=n; i++) res += max((min(l[i],r[i])-a[i]),0); 34 | printf("%lld",res); 35 | 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/V8ORG.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e4+5; 22 | int n, k, F[N]; 23 | vector a[N]; 24 | 25 | void dfs(int p, int u) { 26 | F[u] = 1; 27 | for (auto v : a[u]) { 28 | if (v == p) continue; 29 | dfs(u, v); 30 | F[u] += F[v]; 31 | } 32 | if (F[u] >= k) { 33 | F[u] = 0; 34 | F[0]++; 35 | } 36 | } 37 | 38 | int main() { 39 | // freopen("INP.TXT", "r", stdin); 40 | // freopen("OUT.TXT", "w", stdout); 41 | 42 | scanf("%d%d", &k,&n); 43 | FOR(i,2,n) { 44 | int j; 45 | scanf("%d", &j); 46 | a[i].pb(j); 47 | a[j].pb(i); 48 | } 49 | 50 | dfs(0,1); 51 | 52 | printf("%d\n", F[0]); 53 | 54 | return 0; 55 | } 56 | -------------------------------------------------------------------------------- /src/VCOWFLIX.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int m, n, a[5500]; 22 | bool F[5500]; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | scanf("%d%d", &m,&n); 29 | FOR(i,1,n) scanf("%d", &a[i]); 30 | F[0] = 1; 31 | FOR(i,1,n) 32 | FOD(j,m,a[i]) 33 | F[j] = F[j] || F[j-a[i]]; 34 | FOD(i,m,0) 35 | if (F[i]) { 36 | printf("%d\n", i); 37 | break; 38 | } 39 | 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/VMCANDLE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | ll n, can1, res, can3; 22 | double can2; 23 | 24 | int main() { 25 | // freopen("INP.TXT", "r", stdin); 26 | // freopen("OUT.TXT", "w", stdout); 27 | 28 | cin >> n; 29 | can1 = sqrt(n); 30 | res = n + can1; 31 | can3 = sqrt(res); 32 | if (can3 > can1) res++; 33 | cout << res; 34 | 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /src/VMMTFIVE.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int d[6], c[6], a[6][6]; 22 | 23 | void output() { 24 | FOR(i,1,5) { 25 | FOR(j,1,5) printf("%d ", a[i][j]); 26 | EL; 27 | } 28 | exit(0); 29 | } 30 | 31 | void dq(int i, int j) { 32 | if (i == 6) { 33 | if (c[5] == 0) output(); 34 | return ; 35 | } 36 | int l = max(1, max(d[i]-25*(5-j), c[j]-25*(5-i))); 37 | int r = min(25, min(d[i]-5+j, c[j]-5+i)); 38 | if (l > 25 || r < 1 || l > r) return ; 39 | if (j == 5) l = r = d[i]; 40 | FOR(x,l,r) { 41 | a[i][j] = x; 42 | d[i] -= x; 43 | c[j] -= x; 44 | if (j < 5) dq(i, j+1); 45 | else dq(i+1, 1); 46 | d[i] += x; 47 | c[j] += x; 48 | a[i][j] = 0; 49 | } 50 | } 51 | 52 | int main() { 53 | // freopen("INP.TXT", "r", stdin); 54 | // freopen("OUT.TXT", "w", stdout); 55 | 56 | FOR(i,1,5) scanf("%d", &d[i]); 57 | FOR(i,1,5) scanf("%d", &c[i]); 58 | dq(1,1); 59 | 60 | return 0; 61 | } 62 | -------------------------------------------------------------------------------- /src/VOSRTRI.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | struct data { 22 | int x,y; 23 | }; 24 | 25 | const int N = 1e5+5; 26 | int n, cx[N], cy[N]; 27 | data a[N]; 28 | ll res; 29 | 30 | int main() { 31 | // freopen("INP.TXT", "r", stdin); 32 | // freopen("OUT.TXT", "w", stdout); 33 | 34 | scanf("%d", &n); 35 | for (int i=1; i<=n; i++) { 36 | scanf("%d%d", &a[i].x, &a[i].y); 37 | cx[a[i].x]++; cy[a[i].y]++; 38 | } 39 | for (int i=1; i<=n; i++) { 40 | res += (cx[a[i].x]-1) * 1ll * (cy[a[i].y]-1); 41 | } 42 | printf("%lld", res); 43 | 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/VOSSEVEN.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 1e6+6; 22 | char c[N]; 23 | ll f[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | gets(c); 30 | int l = strlen(c); 31 | int cur = 0, n = 0; 32 | for (int i=0; i0;i--) f[i] += f[i+1]; 42 | 43 | for (int i=1; i<=n; i++) printf("%d %lld\n", i, f[i]); 44 | 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/VRATF.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int solve(int n, int k) { 22 | if (n-k <= 1 || (n+k)%2) return 1; 23 | return solve((n+k)/2,k) + solve((n-k)/2,k); 24 | } 25 | 26 | int main() { 27 | // freopen("INP.TXT", "r", stdin); 28 | // freopen("OUT.TXT", "w", stdout); 29 | 30 | int n, k; 31 | scanf("%d%d", &n,&k); 32 | printf("%d\n", solve(n,k)); 33 | 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /src/VSTEPS.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 150000; 22 | const int mod = 14062008; 23 | int n, k, a[N], F[N]; 24 | 25 | int main() { 26 | // freopen("INP.TXT", "r", stdin); 27 | // freopen("OUT.TXT", "w", stdout); 28 | 29 | scanf("%d%d", &n,&k); 30 | FOR(i,1,k) scanf("%d", &a[0]), a[a[0]] = 1; 31 | F[1] = 1; 32 | FOR(i,2,n) 33 | if (a[i] == 0) 34 | F[i] = (F[i-1] + F[i-2]) % mod; 35 | printf("%d\n", F[n]); 36 | 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/WEATHER.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 111; 22 | int n, m, pa[N], low[N], num[N], f[N], ans; 23 | vector a[N]; 24 | 25 | void dfs(int u) { 26 | num[u] = ++num[0]; 27 | low[u] = n+1; 28 | f[u] = 1; 29 | for (auto v : a[u]) { 30 | if (pa[u] == v) continue; 31 | if (num[v]) 32 | low[u] = min(low[u], num[v]); 33 | else { 34 | pa[v] = u; 35 | dfs(v); 36 | f[u] += f[v]; 37 | low[u] = min(low[u], low[v]); 38 | } 39 | } 40 | } 41 | 42 | int main() { 43 | // freopen("INP.TXT", "r", stdin); 44 | // freopen("OUT.TXT", "w", stdout); 45 | 46 | scanf("%d%d", &n,&m); 47 | while (m--) { 48 | int u, v; 49 | scanf("%d%d", &u,&v); 50 | a[u].ep(v); 51 | a[v].ep(u); 52 | } 53 | FOR(u,1,n) if (pa[u] == 0) dfs(u); 54 | FOR(v,1,n) { 55 | int u = pa[v]; 56 | if (u == 0 || low[v] < num[v]) continue; 57 | ans += f[v] * (n - f[v]); 58 | } 59 | printf("%d\n", ans); 60 | 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/XAYNHA.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | int T; 22 | ll n, x, k, h; 23 | 24 | void solve(ll t) { 25 | if (t < 0) return ; 26 | ll p = t*(t+1)/2; 27 | p *= p; 28 | if (t > h and abs(n-p) <= abs(k)) { 29 | k = n-p; 30 | h = t; 31 | } 32 | } 33 | 34 | int main() { 35 | // freopen("INP.TXT", "r", stdin); 36 | // freopen("OUT.TXT", "w", stdout); 37 | 38 | scanf("%d", &T); 39 | while (T--) { 40 | cin >> n; 41 | if (n == 0) { 42 | printf("0 1 1\n"); 43 | continue; 44 | } 45 | k = n; 46 | h = 0; 47 | x = sqrt(2*sqrt(n)); 48 | for (ll t=x-3; t<=x+3; t++) solve(t); 49 | if (k == 0) printf("1 %lld\n", h); 50 | else printf("0 %lld %lld\n", -k, h); 51 | } 52 | 53 | return 0; 54 | } 55 | -------------------------------------------------------------------------------- /src/ZABAVA.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | typedef pair ii; 7 | typedef unsigned long long ull; 8 | 9 | #define X first 10 | #define Y second 11 | #define pb push_back 12 | #define mp make_pair 13 | #define ep emplace_back 14 | #define EL printf("\n") 15 | #define sz(A) (int) A.size() 16 | #define FOR(i,l,r) for (int i=l;i<=r;i++) 17 | #define FOD(i,r,l) for (int i=r;i>=l;i--) 18 | #define fillchar(a,x) memset(a, x, sizeof (a)) 19 | #define faster ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 20 | 21 | const int N = 505; 22 | int n, m, k, a[N]; 23 | ll f[N][N], g[N][N]; 24 | 25 | ll solve(int n, int k) { 26 | int p = n/k; 27 | int y = n-p*k; 28 | int x = k-y; 29 | return (ll)x * p*(p+1)/2 + (ll)y * (p+1) * (p+2)/2; 30 | } 31 | 32 | 33 | int main() { 34 | // freopen("INP.TXT", "r", stdin); 35 | // freopen("OUT.TXT", "w", stdout); 36 | 37 | scanf("%d%d%d", &n,&m,&k); 38 | FOR(i,1,n) { 39 | int t; scanf("%d", &t); 40 | a[t]++; 41 | } 42 | 43 | FOR(i,1,m) FOR(j,0,k) f[i][j] = solve(a[i], j+1); 44 | 45 | FOR(j,0,k) g[1][j] = f[1][j]; 46 | FOR(i,2,m) FOR(j,0,k) { 47 | g[i][j] = g[i-1][j] + f[i][0]; 48 | FOR(c,1,j) 49 | g[i][j] = min(g[i][j], g[i-1][j-c] + f[i][c]); 50 | } 51 | 52 | printf("%lld", g[m][k]); 53 | 54 | return 0; 55 | } 56 | --------------------------------------------------------------------------------