Submission #690958

#TimeUsernameProblemLanguageResultExecution timeMemory
690958vjudge1DNA 돌연변이 (IOI21_dna)C++17
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define vl vector<ll> #define endl "\n" #define INF 0x3F3F3F3F using namespace std; const int sz=1e5+5; ll n,q,zer=0; ll TreeD[4*sz]; string a,b; void builD(ll v, ll l, ll r){ if(l==r){ if(a[l]!=b[l]){ TreeD[v]=1;return; } TreeD[v]=0;return; } ll m=(l+r)>>1; builD(v*2,l,m); builD(v*2+1,m+1,r); TreeD[v]=TreeD[v*2]+TreeD[v*2+1]; } int FinD(ll v, ll tl, ll tr, ll l, ll r){ if(l>r){ return 0; } if(tl==l and tr==r){ return TreeD[v]; } ll tm=(tl+tr)>>1; return FinD(v*2,tl,tm,l,min(r,tm))+FinD(v*2+1,tm+1,tr,max(l,tm+1),r); } int get_distance(ll left, ll right){ int z=0; int rx=FinD(1,0,n-1,left,right); int res=(rx/2)+(rx%2); res=max(res,z); return res; } void init(string a, string b){ builD(1,0,n-1); vl ac,aa,at,bc,ba,bt; for(ll i=0;i<n;i++){ if(a[i]=='C'){ ac.pb(i); } else if(a[i]=='A'){ aa.pb(i); } else{ at.pb(i); } if(b[i]=='C'){ bc.pb(i); } else if(b[i]=='A'){ ba.pb(i); } else{ bt.pb(i); } } while(q--){ ll left, right; cin>>left>>right; ll lac=lower_bound(ac.begin(),ac.end(),left)-ac.begin(); ll uac=upper_bound(ac.begin(),ac.end(),right)-ac.begin();//uac=max(zer,uac); if(ac[uac-1]>right){uac--;}uac=max(zer,uac); ll cntac=uac-lac; cntac=max(cntac,zer); ll laa=lower_bound(aa.begin(),aa.end(),left)-aa.begin(); ll uaa=upper_bound(aa.begin(),aa.end(),right)-aa.begin();//uaa=max(zer,uaa); if(aa[uaa-1]>right){uaa--;}uaa=max(zer,uaa); ll cntaa=uaa-laa; cntaa=max(cntaa,zer); ll lat=lower_bound(at.begin(),at.end(),left)-at.begin(); ll uat=upper_bound(at.begin(),at.end(),right)-at.begin();//uat=max(zer,uat); if(at[uat-1]>right){uat--;}uat=max(zer,uat); ll cntat=uat-lat; cntat=max(cntat,zer); /*##############################################*/ ll lbc=lower_bound(bc.begin(),bc.end(),left)-bc.begin(); ll ubc=upper_bound(bc.begin(),bc.end(),right)-bc.begin();//ubc=max(zer,ubc); if(ac[ubc-1]>right){ubc--;}ubc=max(zer,ubc); ll cntbc=ubc-lbc; cntbc=max(cntbc,zer); ll lba=lower_bound(ba.begin(),ba.end(),left)-ba.begin(); ll uba=upper_bound(ba.begin(),ba.end(),right)-ba.begin();//uba=max(zer,uba); if(ba[uba-1]>right){uba--;}uba=max(zer,uba); ll cntba=uba-lba; cntba=max(cntba,zer); ll lbt=lower_bound(bt.begin(),bt.end(),left)-bt.begin(); ll ubt=upper_bound(bt.begin(),bt.end(),right)-bt.begin();//ubt=max(zer,ubt); if(bt[ubt-1]>right){ubt--;}ubt=max(zer,ubt); ll cntbt=ubt-lbt; cntbt=max(cntbt,zer); if(cntac!=cntbc or cntaa!=cntba or cntat!=cntbt){ cout<<-1<<endl; } else{ cout<<get_distance(left,right)<<endl; } } }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccuMNYlY.o: in function `main':
grader.cpp:(.text.startup+0x39d): undefined reference to `get_distance(int, int)'
collect2: error: ld returned 1 exit status