제출 #1198477

#제출 시각아이디문제언어결과실행 시간메모리
1198477PlayVoltz수열 (APIO14_sequence)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pii pair<int, int>
#define mp make_pair
#define pb push_back

deque <pair<pii, int> > convexhull;

int eval(pii line, int x){
	return line.first*x+line.second;
}

pii query(int x){
	while (convexhull.size()>1){
		if (eval(convexhull[0].first, x)<eval(convexhull[1].first, x))convexhull.pop_front();
		else break;
	}
	return mp(eval(convexhull[0].first, x), convexhull[0].second);
}

long double intersect(pii a, pii b){
	return (long double)(b.second-a.second)/(a.first-b.first);
}

void insert(int m, int c, int id){
	pii line = mp(m, c);
	while (convexhull.size()>1){
		int s = convexhull.size();
		if (intersect(convexhull[s-1].first, line)<=intersect(convexhull[s-2].first, line))convexhull.pop_back();
		else break;
	}
	convexhull.push_back(mp(line, id));
}

int32_t main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n, k, a;
	cin>>n>>k;
	vector<int> psum(100005, 0);
	vector<vector<int> > dp(2, vector<int>(100005, 0)), par(205, vector<int>(100005, 0))
	for (int i=1; i<=n; ++i)cin>>a, psum[i]=a+psum[i-1];
	for (int i=1; i<=n; ++i)dp[1][i] = psum[i]*(psum[n]-psum[i]);
	for (int l=2; l<=k; ++l){
		int j=l%2;
		convexhull.clear();
		for (int i=l; i<=n-k+l; ++i){
			insert(psum[i-1], dp[1-j][i-1]-psum[n]*psum[i-1], i-1);
			pii res = query(psum[i]);
			dp[j][i] = res.first+psum[n]*psum[i]-psum[i]*psum[i];
			par[l][i] = res.second;
		}
	}
	int maxnum=INT_MIN, num;
	for (int i=1; i<=n; ++i)if (dp[k%2][i]>maxnum)maxnum=dp[k%2][i], num=i;
	cout<<maxnum<<"\n";
	while (num){
		cout<<num<<" ";
		num = par[k][num];
		--k;
	}
}

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

sequence.cpp: In function 'int32_t main()':
sequence.cpp:44:9: error: expected ',' or ';' before 'for'
   44 |         for (int i=1; i<=n; ++i)cin>>a, psum[i]=a+psum[i-1];
      |         ^~~
sequence.cpp:44:23: error: 'i' was not declared in this scope
   44 |         for (int i=1; i<=n; ++i)cin>>a, psum[i]=a+psum[i-1];
      |                       ^