제출 #109684

#제출 시각아이디문제언어결과실행 시간메모리
109684tincamateiTwo Dishes (JOI19_dishes)C++14
10 / 100
123 ms57976 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 1000000;
const int SUBTASK = 2000;

struct Dish {
	int len, art;
	long long limit;
} v1[1+MAX_N], v2[1+MAX_N];

long long sp1[1+MAX_N], sp2[1+MAX_N];
long long dp[1+SUBTASK][1+SUBTASK];
bool dish[1+SUBTASK][1+SUBTASK];

int main() {
#ifdef HOME
	FILE *fin = fopen("input.in", "r");
	FILE *fout = fopen("output.out", "w");
#else
	FILE *fin = stdin;
	FILE *fout = stdout;
#endif

	int n, m;
	fscanf(fin, "%d%d", &n, &m);
	for(int i = 1; i <= n; ++i) {
		fscanf(fin, "%d%lld%d", &v1[i].len, &v1[i].limit, &v1[i].art);
		sp1[i] = sp1[i - 1] + v1[i].len;
		if(sp1[i] <= v1[i].limit)
			dp[i][0] = dp[i - 1][0] + v1[i].art;
		else
			dp[i][0] = dp[i - 1][0];
		dish[i][0] = 0;
	}
	for(int i = 1; i <= m; ++i) {
		fscanf(fin, "%d%lld%d", &v2[i].len, &v2[i].limit, &v2[i].art);
		sp2[i] = sp2[i - 1] + v2[i].len;
		if(sp2[i] <= v2[i].limit)
			dp[0][i] = dp[0][i - 1] + v2[i].art;
		else
			dp[0][i] = dp[0][i - 1];
		dish[0][i] = 1;
	}

	for(int i = 1; i <= n; ++i)
		for(int j = 1; j <= m; ++j) {
			long long t = sp1[i] + sp2[j];
			long long c1 = dp[i - 1][j], c2 = dp[i][j - 1];
			
			if(t <= v1[i].limit)
				c1 += v1[i].art;
			if(t <= v2[j].limit)
				c2 += v2[j].art;

			if(c1 > c2)
				dish[i][j] = 0;
			else
				dish[i][j] = 1;
			dp[i][j] = max(c1, c2);
		}

	fprintf(fout, "%lld", dp[n][m]);

	fclose(fin);
	fclose(fout);
	return 0;
}

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

dishes.cpp: In function 'int main()':
dishes.cpp:27:8: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  fscanf(fin, "%d%d", &n, &m);
  ~~~~~~^~~~~~~~~~~~~~~~~~~~~
dishes.cpp:29:9: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   fscanf(fin, "%d%lld%d", &v1[i].len, &v1[i].limit, &v1[i].art);
   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dishes.cpp:38:9: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   fscanf(fin, "%d%lld%d", &v2[i].len, &v2[i].limit, &v2[i].art);
   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...