Submission #791000

#TimeUsernameProblemLanguageResultExecution timeMemory
791000ALeonidouMutating DNA (IOI21_dna)C++17
56 / 100
31 ms6808 KiB
#include <iostream> #include <vector> #include <stack> #include <queue> #include <map> #include <set> #include <algorithm> #include <iomanip> #include <cmath> #include <bitset> #include <string> #include <fstream> #include <cstring> using namespace std; #define ll int #define llu unsigned long long #define ld long double #define F first #define S second #define endl "\n" #define MID ((l+r)/2) #define sorv(a) sort(a.begin(),a.end()) #define revv(a) reverse(a.begin(),a.end()) #define all(x) (x).begin(),(x).end() #define sz(x) (ll)(x).size() #define ins insert #define pb push_back #define inf 1e9 #define INF 1e18 #define MOD 1000000007 #define MOD2 998244353 typedef pair <ll, ll> ii; typedef pair <ll,ii> iii; typedef vector <ll> vi; typedef vector <ii> vii; typedef vector <iii> viii; typedef set <ll> si; typedef map <ll,ll> mi; #ifndef ONLINE_JUDGE //#define ONLINE_JUDGE #endif #ifndef ONLINE_JUDGE template<typename T>void printArr(T *arr,ll l,ll m=0){if(m==1){for(ll i=0;i<l;i++)cout<<arr[i]<<" ";cout<<endl;}else{cout<<endl;for(ll i=0;i<l;i++)cout<<i<<": "<<arr[i]<<endl;}} #define printArr2D(arr,n,m)cout<<endl;for(ll i=0;i<n;i++){for(ll j=0;j<m;j++)cout<<arr[i][j]<<" ";cout<<endl;}cout<<endl; template<typename T>void printVct(vector<T> v,ll m=0){if(m==1){for(ll i=0;i<sz(v);i++)cout<<v[i]<<" ";cout<<endl;}else{cout<<endl;for(ll i=0; i<sz(v);i++)cout<<i<<": "<<v[i]<<endl;}} template<typename T>void printVct2D(vector<vector<T> >v){cout<<endl;for(ll i=0;i<sz(v);i++){cout<<i<<": ";for(ll j=0;j<sz(v[i]);j++)cout<<v[i][j]<<" ";cout<<endl;}} template<typename T>void printVctPair(vector<T> v,ll m=0){if(m==1){for(ll i=0;i<sz(v);i++)cout<<v[i].F<<":"<<v[i].S<<" ";cout<<endl;}else{cout<<endl;for(ll i=0;i<sz(v);i++)cout<<i<<": "<<v[i].F<<" : "<<v[i].S<<endl;}} template<typename T>void printVctPair2D(vector<vector<T> >v){cout<<endl;for(ll i=0;i<sz(v);i++){cout<<i<<": ";for(ll j=0;j<sz(v[i]);j++)cout<<v[i][j].F<<":"<<v[i][j].S<<" ";cout<<endl;}} template<typename T>void printVctPair3(vector<T> v,ll m=0){cout<<endl;for(ll i=0;i<sz(v);i++)cout<<i<<": ("<<v[i].F<<" : "<<v[i].S.F<<" : "<<v[i].S.S<<")"<<endl;} template<typename T1,typename T2>void printMap(map<T1,T2>mp){cout<<endl;for(typename map<T1,T2>::iterator it=mp.begin();it!=mp.end();it++)cout<<it->F<<" -> "<<it->S<<endl;} template<typename T>void printSet(set<T>st,ll m=0){typename set<T>::iterator it;if(m){for(it=st.begin();it!=st.end();it++)cout<<*it<<" ";cout<<endl;}else{cout<<endl;for(it=st.begin();it!=st.end();it++)cout<<*it<<endl;}} void check(ll n){cout<<"CHECKPOINT "<<n<<"\n\n";} #define dbg(x) cout<<#x<<":"<<x<<endl #define dbg2(x,y) cout<<#x<<":"<<x<<" "<<#y<<":"<<y<<endl #define dbg3(x,y,z) cout<<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<endl #define dbg4(x,y,z,w) cout<<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<" "<<#w<<":"<<w<<endl #define dbg5(x,y,z,w,v) cout<<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<" "<<#w<<":"<<w<<" "<<#v<<":"<<v<<endl #define dbg6(x,y,z,w,v,u) cout<<#x<<":"<<x<<" "<<#y<<":"<<y<<" "<<#z<<":"<<z<<" "<<#w<<":"<<w<<" "<<#v<<":"<<v<<" "<<#u<<":"<<u<<endl #define dbgp(x) cout<<#x<<":("<<x.F<<" "<<x.S<<")"<<endl #define dbgp2(x,y) cout<<#x<<":("<<x.F<<","<<x.S<<") "<<#y<<":("<<y.F<<","<<y.S<<")"<<endl #define dbgt(x) cout<<#x<<":("<<x.F<<" "<<x.S.F<<" "<<x.S.S<<")"<<endl #define dbgt2(x,y) cout<<#x<<":("<<x.F<<" "<<x.S.F<<" "<<x.S.S<<") "<<#y<<":("<<y.F<<" "<<y.S.F<<" "<<y.S.S<<")"<<endl #else template<typename T>void printArr(T *arr,ll l,ll m=0){} #define printArr2D(arr,n,m) template<typename T>void printVct(vector<T> v,ll m=0){} template<typename T>void printVct2D(vector<vector<T> >v){} template<typename T>void printVctPair(vector<T> v,ll m=0){} template<typename T>void printVctPair2D(vector<vector<T> >v){} template<typename T>void printVctPair3(vector<T> v,ll m=0){} template<typename T1,typename T2>void printMap(map<T1,T2>mp){} template<typename T>void printSet(set<T>st,ll m=0){} void check(ll n){} #define dbg(x) #define dbg2(x,y) #define dbg3(x,y,z) #define dbg4(x,y,z,w) #define dbg5(x,y,z,w,v) #define dbg6(x,y,z,w,v,u) #define dbgp(x) #define dbgp2(x,y) #define dbgt(x) #define dbgt2(x,y) #endif const ll dx[8]={1,-1,0,0,1,1,-1,-1}, dy[8]={0,0,1,-1,1,-1,1,-1}; ll charToIntNum(char c){return (ll)c-48;} char intToCharNum(ll n){return (char)n+48;} ll charToIntLower(char c){return (ll)c-97;} char intToCharLower(ll n){return (char)n+97;} ll charToIntUpper(char c){return (ll)c-65;} char intToCharUpper(ll n){return (char)n+65;} void tabb(ll n){for(ll i=0;i<n;i++)cout<<"\t";} ll gcd(ll x,ll y){if(y==0)return x;return gcd(y,x%y);} void yesno(bool a){if(a){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}} #define N 100000 string s[2]; ll s_A[N+1][2], s_C[N+1][2], s_T[N+1][2]; ll s_pos[N+1]; void init(string x, string y){ s[0] = x; s[1] = y; ll n= sz(x); for (ll i=0;i<2; i++){ s_A[0][i] = 0; for (ll j = 0; j<n; j++) s_A[j+1][i] = s_A[j][i] + (s[i][j] == 'A') ; s_C[0][i] = 0; for (ll j = 0; j<n; j++) s_C[j+1][i] = s_C[j][i] + (s[i][j] == 'C') ; s_T[0][i] = 0; for (ll j = 0; j<n; j++) s_T[j+1][i] = s_T[j][i] + (s[i][j] == 'T') ; } s_pos[0] = 0; for (ll i=0; i<n; i++){ s_pos[i+1] += s_pos[i] + (s[0][i] != s[1][i]); } } bool ok(ll x, ll y){ x++,y++; bool a = ((s_A[y][0] - s_A[x-1][0]) == (s_A[y][1] - s_A[x-1][1])); bool c = ((s_C[y][0] - s_C[x-1][0]) == (s_C[y][1] - s_C[x-1][1])); bool g = ((s_T[y][0] - s_T[x-1][0]) == (s_T[y][1] - s_T[x-1][1])); return (a & c & g); } ll countMisplaced(ll x, ll y){ x++, y++; return s_pos[y] - s_pos[x-1]; } ll get_distance(ll x, ll y){ if (!ok(x,y)) return -1; ll wrong = countMisplaced(x,y); //subtask 1: if (y - x <= 2){ if (wrong == 2) return 1; if (wrong == 3) return 2; return 0; } //subtask 3: return (wrong/2 + wrong%2); } // int main(){ // ios_base::sync_with_stdio(0); // cin.tie(0); cout.tie(0); // init("ATACAT", "ACTATA"); // dbg(get_distance(1,3)); // dbg(get_distance(4,5)); // dbg(get_distance(3,5)); // 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...