제출 #480689

#제출 시각아이디문제언어결과실행 시간메모리
480689HaidaraDNA 돌연변이 (IOI21_dna)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h>
#define rep(i,x,n) for(int i=x;i<n;i++)
#define FOR(i,n) rep(i,0,n)
using namespace std;
const int maxn=100200;
int t[2][maxn],a[2][maxn],c[2][maxn],tc[maxn],ct[maxn],at[maxn],ta[maxn],ac[maxn],ca[maxn];
void compute(string s,int inx)
{
	int n=s.size();
	FOR(i,n)
	{
		a[inx][i+1]=a[inx][i]+(int)(s[i]=='A');
		t[inx][i+1]=t[inx][i]+(int)(s[i]=='T');
		c[inx][i+1]=c[inx][i]+(int)(s[i]=='C');
	}
}
string s,l;
void init(string x, string y) 
{
	s=x,l=y;
	compute(x,0);
	compute(y,1);
	FOR(i,n)
	{
		ta[i+1]=ta[i]+(int)(s[i]=='T'&&l[i]=='A');
		at[i+1]=at[i]+(int)(s[i]=='A'&&l[i]=='T');
		ac[i+1]=ac[i]+(int)(s[i]=='A'&&l[i]=='C');
		ca[i+1]=ca[i]+(int)(s[i]=='C'&&l[i]=='A');
		tc[i+1]=tc[i]+(int)(s[i]=='T'&&l[i]=='C');
		ct[i+1]=ct[i]+(int)(s[i]=='C'&&l[i]=='T');
	}
}
int get_distance(int x,int y)
{
	if(t[0][y]-t[0][x-1]!=t[1][y]-t[1][x-1]||
		c[0][y]-c[0][x-1]!=c[1][y]-c[1][x-1]||
		a[0][y]-a[0][x-1]!=a[1][y]-a[1][x-1])
		return -1;
	int ans=0;
	int TC=tc[y]-tc[x-1];
	int CT=ct[y]-ct[x-1];
	int AC=ac[y]-ac[x-1];
	int CA=ca[y]-ca[x-1];
	int TA=ta[y]-ta[x-1];
	int AT=at[y]-at[x-1];
	int dx;
	dx=abs(AT-TA);
	ans+=dx;
	AT-=dx;
	TA-=dx;
	dx=abs(AC-CA);
	ans+=dx;
	AC-=dx;
	CA-=dx;
	dx=abs(TC-CT);
	ans+=dx;
	TC-=dx;
	CT-=dx;
	ans+=((TC+CT+AT+TA+CA+AC)*2)/3;
	return ans;
}






컴파일 시 표준 에러 (stderr) 메시지

dna.cpp: In function 'void init(std::string, std::string)':
dna.cpp:23:8: error: 'n' was not declared in this scope
   23 |  FOR(i,n)
      |        ^
dna.cpp:2:34: note: in definition of macro 'rep'
    2 | #define rep(i,x,n) for(int i=x;i<n;i++)
      |                                  ^
dna.cpp:23:2: note: in expansion of macro 'FOR'
   23 |  FOR(i,n)
      |  ^~~