Submission #20590743


Source Code Expand

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;


#define int 					long long int
#define cel(x,y)				(x+y-1)/y
#define flr(x,y)				x/y
#define endl					"\n"
#define pb 						push_back
#define pii 					pair<int,int>
#define psi 					pair<string,int>
#define vi 						vector<int>
#define pqi 					priority_queue<int>
#define pqim 					priority_queue<int,vector<int>,greater<int>>
#define umis 					unordered_map<int,string>
#define umii 					unordered_map<int,int>
#define msi 				    map<string,int>
#define mii 				    map<int,int>
#define setbits(n)			    __builtin_popcountll(n) // for long long
#define zrbits(n)			    __builtin_ctzll(n)
#define f(i,x,n)			    for(int i=x;i<n;++i)
#define mod			    		1000000007
#define sp(x,y)			    	fixed<<setprecision(y)<<x
mt19937							rng(chrono::steady_clock::now().time_since_epoch().count());
#define fastio                  ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;

void setup() {
	// for fast input output
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
}

int power(int a, int  n) {
	int val;
	if (n == 0) return 1;
	else if (n % 2 == 0)
	{
		val = power(a, n / 2);
		return  val * val;
	}
	else {
		val = power(a, n / 2);
		return a * val * val;
	}
}

int GCD(int a, int b) { if (b == 0) return a; return GCD(b, a % b);}

int LCM(int a, int b) {return (a * b) / GCD(a, b);}

int min(int a, int b) {if (a > b) return b; else return a;}

int max(int a, int b) {if (a > b) return a; else return b;}

// ============================================================================================================
int32_t main() {

	//setup();
	fastio;
	string s, t;
	cin >> s >> t;

	int n = s.length(), m = t.length();
	string dp[n][m];
	bool flag = false;
	for (int i = 0; i < n; ++i) {
		if (!flag and s[i] == t[0]) {
			dp[i][0] = t[0];
			flag = true;
		}
		else if (flag) {
			dp[i][0] = t[0];
		}
	}
	flag = false;
	for (int j = 0; j < m; ++j) {
		if (!flag and t[j] == s[0]) {
			dp[0][j] = s[0];
			flag = true;
		}
		else if (flag) {
			dp[0][j] = s[0];
		}
	}
	for (int i = 1; i < n; ++i) {
		for (int j = 1; j < m; ++j) {
			if (s[i] == t[j]) {
				string x = dp[i - 1][j - 1] + s[i];
				string y = dp[i][j - 1];
				string z = dp[i - 1][j];
				if (x.length() >= y.length() and x.length() >=  z.length()) {
					dp[i][j] = x;
				}
				else if (y.length() >= x.length() and y.length() >=  z.length()) {
					dp[i][j] = y;
				}
				else {
					dp[i][j] = z;
				}
			}
			else {
				string y = dp[i][j - 1];
				string z = dp[i - 1][j];
				if (y.length() >= z.length()) {
					dp[i][j] = y;
				}
				else {
					dp[i][j] = z;
				}
			}
		}
	}
	cout << dp[n - 1][m - 1] << endl;
	return 0;
}

Submission Info

Submission Time
Task F - LCS
User igrishi
Language C++ (GCC 9.2.1)
Score 0
Code Size 3046 Byte
Status TLE
Exec Time 2314 ms
Memory 3150708 KiB

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 9
TLE × 9
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13
Case Name Status Exec Time Memory
0_00 AC 4 ms 3644 KiB
0_01 AC 4 ms 3564 KiB
0_02 AC 2 ms 3564 KiB
0_03 AC 2 ms 3604 KiB
1_00 AC 2 ms 3604 KiB
1_01 AC 2 ms 3448 KiB
1_02 TLE 2292 ms 2850748 KiB
1_03 AC 314 ms 284648 KiB
1_04 AC 314 ms 284752 KiB
1_05 AC 308 ms 284680 KiB
1_06 TLE 2290 ms 2851932 KiB
1_07 TLE 2288 ms 2799476 KiB
1_08 TLE 2290 ms 2863320 KiB
1_09 TLE 2292 ms 2933568 KiB
1_10 TLE 2295 ms 3037392 KiB
1_11 TLE 2295 ms 3117792 KiB
1_12 TLE 2296 ms 3137196 KiB
1_13 TLE 2314 ms 3150708 KiB