Submission #1338473
Source Code Expand
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
#include<stack>
using namespace std;
typedef long long ll;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define GREY 2
#define WHITE 1
#define BLACK 0
ll d, k, tenki[201], maxi[200] = { -1 }, mini[201], dp[200] = { -1 };
ll DP(ll n, ll suuchi) {
if (n == d) { return 0; }
if (dp[n] >= 0) {return dp[n]; }//cout << n << " " << suuchi << endl;
if (n == 0) {
return max(DP(n + 1, mini[tenki[n]]), DP(n + 1, maxi[tenki[n]]));
}
//cout<< suuchi - maxi[tenki[n]]<<endl;
return dp[n] = max({ DP(n + 1, maxi[tenki[n]]) + abs(maxi[tenki[n - 1]] - maxi[tenki[n]]), DP(n + 1, mini[tenki[n]]) + abs(mini[tenki[n - 1]] - mini[tenki[n]]) ,DP(n + 1, mini[tenki[n]]) + abs(mini[tenki[n - 1]] - maxi[tenki[n]]), DP(n + 1, mini[tenki[n]]) + abs(maxi[tenki[n - 1]] - mini[tenki[n]]) });
}
int main()
{
memset(dp, -1, sizeof(dp));
memset(maxi, -1, sizeof(maxi));
REP(i, 201) { mini[i] = 100000; }
cin >> d >> k;
REP(i, d) {
cin >> tenki[i];
}
REP(i, k) {
ll mi, ma, c;
cin >> mi >> ma >> c;
FOR(j, mi, ma + 1) {
maxi[j] = max(maxi[j], c);
mini[j] = min(mini[j], c);
}
}
cout << DP(0, 0)<<endl;
//cout << maxi[tenki[0]] << endl;
/*int ma= DP(0, maxi[tenki[0]]);
memset(dp, -1, sizeof(dp));
int mi = DP(0, mini[tenki[0]]);
cout << max(ma, mi) << endl;*/
return 0;
}
Submission Info
Submission Time |
|
Task |
D - 暑い日々 (Hot days) |
User |
keidaroo |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
1465 Byte |
Status |
WA |
Exec Time |
1 ms |
Memory |
256 KB |
Judge Result
Set Name |
set01 |
set02 |
set03 |
set04 |
set05 |
Score / Max Score |
0 / 20 |
0 / 20 |
0 / 20 |
0 / 20 |
0 / 20 |
Status |
|
|
|
|
|
Set Name |
Test Cases |
set01 |
data1 |
set02 |
data2 |
set03 |
data3 |
set04 |
data4 |
set05 |
data5 |
Case Name |
Status |
Exec Time |
Memory |
data1 |
WA |
1 ms |
256 KB |
data2 |
WA |
1 ms |
256 KB |
data3 |
WA |
1 ms |
256 KB |
data4 |
WA |
1 ms |
256 KB |
data5 |
WA |
1 ms |
256 KB |