Submission #1003428
Source Code Expand
#include <set> #include <map> #include <cmath> #include <ctime> #include <bitset> #include <string> #include <vector> #include <cstdio> #include <cstdlib> #include <cstring> #include <cassert> #include <iomanip> #include <iostream> #include <algorithm> #define PR pair #define fi first #define se second #define mk make_pair #define pb push_back #define REP(i, x, y) for(int i = (int)(x); i <= (int)(y); i++) #define FOR(i, x, y) for(int i = (int)(x); i < (int)(y); i++) #define PER(i ,x, y) for(int i = (int)(x); i >= (int)(y); i--) #define CH ch = getchar() #define Exit(...) printf(__VA_ARGS__), exit(0) #define dln() fprintf(stderr,"\n") #define dprintf(...) fprintf(stderr,__VA_ARGS__) using namespace std; typedef double db; typedef long long LL; typedef vector<int> VI; typedef vector<VI > VII; typedef PR<int,int> PII; typedef vector<PII> VPI; const int inf=2e9; const LL Inf=1e10; const int P=1e9+7; const int N=1000005; inline LL IN(){ LL x = 0; int ch = 0, f = 0; for (CH; ch != -1 && (ch < 48 || ch > 57); CH) f = (ch == '-'); for (; ch >= 48 && ch <= 57; CH) x = (x << 1) + (x << 3) + ch - '0'; return f ? (-x) : x; } template<typename T> inline int chkmin(T &a, const T &b){if(b < a) return a = b, 1; return 0;} template<typename T> inline int chkmax(T &a, const T &b){if(b > a) return a = b, 1; return 0;} void renew(int &x, const int &y){ x += y; if(x >= P) x -= P; if(x < 0) x += P; } int Pow(int x, int y, int p){ int a = 1; for (; y; y >>= 1, x = (LL)x * x %p) if(y & 1) a=(LL)a * x%p; return a; } int las[N << 1]; int gts[N << 1]; int sum[N]; int n, A[N], F[N]; char S[N], T[N]; int main(){ scanf("%d", &n); scanf("%s%s", S + 1, T + 1); int flag = 1; REP(i, 1, n) if(S[i] ^ T[i]) flag = 0; if(flag){ puts("0"); return 0; } int x = n; PER(i, n, 1){ if(x > i) x = i; while(x && S[x] != T[i]) x --; if(!x){ puts("-1"); exit(0); } A[i] = x; } REP(i, 1, n) if(A[i] ^ i) F[A[i]] = 1; REP(i, 1, n) sum[i] = sum[i - 1] + F[i]; REP(i, 1, n) gts[i] = gts[i - 1] + (F[i] ? 0 : 1); int ans = 0; PER(i, n, 1){ las[gts[i] + n] = i; if(A[i] != A[i - 1] && A[i] != i){ int u = sum[i] - sum[A[i]]; int r = las[u + gts[i] + n]; chkmax(ans, sum[r] - sum[A[i]] + 1); } } printf("%d\n", ans + 1); return 0; }
Submission Info
Submission Time | |
---|---|
Task | F - Shik and Copying String |
User | syc19999 |
Language | C++14 (GCC 5.4.1) |
Score | 1500 |
Code Size | 2404 Byte |
Status | AC |
Exec Time | 45 ms |
Memory | 21504 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:69:17: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &n); ^ ./Main.cpp:70:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%s%s", S + 1, T + 1); ^
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1500 / 1500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example0.txt, example1.txt, example2.txt, example3.txt |
All | 000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, 033.txt, 034.txt, 035.txt, 036.txt, 037.txt, 038.txt, 039.txt, 040.txt, 041.txt, 042.txt, 043.txt, 044.txt, 045.txt, 046.txt, 047.txt, 048.txt, 049.txt, 050.txt, 051.txt, 052.txt, 053.txt, 054.txt, 055.txt, 056.txt, 057.txt, 058.txt, example0.txt, example1.txt, example2.txt, example3.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
000.txt | AC | 3 ms | 256 KB |
001.txt | AC | 3 ms | 256 KB |
002.txt | AC | 3 ms | 256 KB |
003.txt | AC | 3 ms | 256 KB |
004.txt | AC | 3 ms | 256 KB |
005.txt | AC | 3 ms | 256 KB |
006.txt | AC | 3 ms | 256 KB |
007.txt | AC | 3 ms | 256 KB |
008.txt | AC | 3 ms | 384 KB |
009.txt | AC | 3 ms | 256 KB |
010.txt | AC | 3 ms | 256 KB |
011.txt | AC | 3 ms | 256 KB |
012.txt | AC | 3 ms | 256 KB |
013.txt | AC | 3 ms | 256 KB |
014.txt | AC | 3 ms | 256 KB |
015.txt | AC | 3 ms | 256 KB |
016.txt | AC | 3 ms | 256 KB |
017.txt | AC | 3 ms | 256 KB |
018.txt | AC | 3 ms | 256 KB |
019.txt | AC | 3 ms | 256 KB |
020.txt | AC | 3 ms | 256 KB |
021.txt | AC | 3 ms | 256 KB |
022.txt | AC | 3 ms | 256 KB |
023.txt | AC | 3 ms | 256 KB |
024.txt | AC | 3 ms | 256 KB |
025.txt | AC | 11 ms | 2176 KB |
026.txt | AC | 35 ms | 17792 KB |
027.txt | AC | 36 ms | 17792 KB |
028.txt | AC | 45 ms | 19200 KB |
029.txt | AC | 45 ms | 19200 KB |
030.txt | AC | 39 ms | 21504 KB |
031.txt | AC | 40 ms | 21504 KB |
032.txt | AC | 42 ms | 21376 KB |
033.txt | AC | 42 ms | 21376 KB |
034.txt | AC | 42 ms | 21376 KB |
035.txt | AC | 42 ms | 21376 KB |
036.txt | AC | 42 ms | 21376 KB |
037.txt | AC | 41 ms | 21248 KB |
038.txt | AC | 40 ms | 21248 KB |
039.txt | AC | 40 ms | 21120 KB |
040.txt | AC | 42 ms | 19456 KB |
041.txt | AC | 39 ms | 18816 KB |
042.txt | AC | 36 ms | 18048 KB |
043.txt | AC | 36 ms | 18048 KB |
044.txt | AC | 35 ms | 17792 KB |
045.txt | AC | 35 ms | 17792 KB |
046.txt | AC | 35 ms | 17792 KB |
047.txt | AC | 35 ms | 17792 KB |
048.txt | AC | 35 ms | 17792 KB |
049.txt | AC | 35 ms | 17792 KB |
050.txt | AC | 16 ms | 6144 KB |
051.txt | AC | 16 ms | 6144 KB |
052.txt | AC | 14 ms | 4096 KB |
053.txt | AC | 39 ms | 19712 KB |
054.txt | AC | 39 ms | 19712 KB |
055.txt | AC | 39 ms | 19072 KB |
056.txt | AC | 39 ms | 18944 KB |
057.txt | AC | 39 ms | 18816 KB |
058.txt | AC | 39 ms | 18816 KB |
example0.txt | AC | 3 ms | 256 KB |
example1.txt | AC | 3 ms | 256 KB |
example2.txt | AC | 3 ms | 384 KB |
example3.txt | AC | 3 ms | 256 KB |