Submission #918955

#TimeUsernameProblemLanguageResultExecution timeMemory
918955jpfr12Nizin (COCI16_nizin)C++14
40 / 100
1020 ms65536 KiB
#include <iostream> #include <stdio.h> #include <algorithm> #include <vector> #include <queue> #include <deque> #include <set> #include <string> #include <map> #include <math.h> #include <cmath> #include <climits> #include <unordered_map> #include <unordered_set> #include <assert.h> #include <fstream> #include <bitset> #include <iomanip> typedef long long ll; using namespace std; int MOD = (int)1e9; int MAXN = 1e6; //classes //global vector<vector<int>> dp; int sol(int left, int right, vector<int> vec){ if(dp[left][right] != -1) return dp[left][right]; else if(left+1 == right) return vec[left] != vec[right]; else if(left == right) return 0; if(vec[left] == vec[right]) dp[left][right] = sol(left+1, right-1, vec); else{ vector<int> temp = vec; temp[left+1] = temp[left+1] + temp[left]; dp[left][right] = 1 + sol(left+1, right, temp); temp = vec; temp[right-1] += temp[right]; dp[left][right] = min(dp[left][right], 1 + sol(left, right-1, temp)); } return dp[left][right]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); //ifstream fin("input.txt"); //ofstream fout("output.txt"); //stop int n; cin >> n; vector<int> vec(n); dp.resize(n, vector<int>(n, -1)); for(int& i: vec) cin >> i; cout << sol(0, n-1, vec) << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...