답안 #841382

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
841382 2023-09-01T15:13:23 Z alex_2008 K개의 묶음 (IZhO14_blocks) C++14
컴파일 오류
0 ms 0 KB
#include <iostream>using namespace std;const int N = 100100, K = 101;int dp[N][K], a[N], prevv[N], mn[N];int main() {	int n, k;	scanf("%d%d", &n, &k);	a[0] = 1e6 + 10;	for (int i = 1; i <= n; i++) {		scanf("%d", &a[i]);		int j = i - 1;		while (a[j] < a[i]) {			j = prevv[j];		}		prevv[i] = j;	}	dp[0][1] = 1e9 + 10;	dp[1][1]  = a[1];	for (int i = 2; i <= n; i++) {		dp[i][1] = max(dp[i - 1][1], a[i]);	}	for (int j = 2; j <= k; j++) {		mn[0] = 1e9 + 10;		for (int i = 1; i <= n; i++) {			mn[i] = 1e9 + 10;			int x = i - 1;			while (x != prevv[i]) {				mn[i] = min(mn[i], mn[x]);			    mn[i] = min(mn[i], dp[x][j - 1]);				x = prevv[x];			}			mn[i] = min(mn[i], dp[prevv[i]][j - 1]);		}		for (int i = 0; i <= n; i++) {			if (i < j) dp[i][j] = 1e9 + 10;			else {				dp[i][j] = dp[prevv[i]][j];				dp[i][j] = min(dp[i][j], mn[i] + a[i]);			}		}	}	printf("%d\n", dp[n][k]);}

Compilation message

blocks.cpp:1:26: warning: extra tokens at end of #include directive
    1 | #include <iostream>using namespace std;const int N = 100100, K = 101;int dp[N][K], a[N], prevv[N], mn[N];int main() { int n, k; scanf("%d%d", &n, &k); a[0] = 1e6 + 10; for (int i = 1; i <= n; i++) {  scanf("%d", &a[i]);  int j = i - 1;  while (a[j] < a[i]) {   j = prevv[j];  }  prevv[i] = j; } dp[0][1] = 1e9 + 10; dp[1][1]  = a[1]; for (int i = 2; i <= n; i++) {  dp[i][1] = max(dp[i - 1][1], a[i]); } for (int j = 2; j <= k; j++) {  mn[0] = 1e9 + 10;  for (int i = 1; i <= n; i++) {   mn[i] = 1e9 + 10;   int x = i - 1;   while (x != prevv[i]) {    mn[i] = min(mn[i], mn[x]);       mn[i] = min(mn[i], dp[x][j - 1]);    x = prevv[x];   }   mn[i] = min(mn[i], dp[prevv[i]][j - 1]);  }  for (int i = 0; i <= n; i++) {   if (i < j) dp[i][j] = 1e9 + 10;   else {    dp[i][j] = dp[prevv[i]][j];    dp[i][j] = min(dp[i][j], mn[i] + a[i]);   }  } } printf("%d\n", dp[n][k]);}
      |                          ^~~~~~~~~
blocks.cpp:1:10: fatal error: iostream>usin: No such file or directory
    1 | #include <iostream>using namespace std;const int N = 100100, K = 101;int dp[N][K], a[N], prevv[N], mn[N];int main() { int n, k; scanf("%d%d", &n, &k); a[0] = 1e6 + 10; for (int i = 1; i <= n; i++) {  scanf("%d", &a[i]);  int j = i - 1;  while (a[j] < a[i]) {   j = prevv[j];  }  prevv[i] = j; } dp[0][1] = 1e9 + 10; dp[1][1]  = a[1]; for (int i = 2; i <= n; i++) {  dp[i][1] = max(dp[i - 1][1], a[i]); } for (int j = 2; j <= k; j++) {  mn[0] = 1e9 + 10;  for (int i = 1; i <= n; i++) {   mn[i] = 1e9 + 10;   int x = i - 1;   while (x != prevv[i]) {    mn[i] = min(mn[i], mn[x]);       mn[i] = min(mn[i], dp[x][j - 1]);    x = prevv[x];   }   mn[i] = min(mn[i], dp[prevv[i]][j - 1]);  }  for (int i = 0; i <= n; i++) {   if (i < j) dp[i][j] = 1e9 + 10;   else {    dp[i][j] = dp[prevv[i]][j];    dp[i][j] = min(dp[i][j], mn[i] + a[i]);   }  } } printf("%d\n", dp[n][k]);}
      |          ^~~~~~~~~~~~~~~
compilation terminated.