結果
問題 | No.2408 Lakes and Fish |
ユーザー | vjudge1 |
提出日時 | 2024-05-01 23:42:06 |
言語 | C++17(clang) (17.0.6 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 203 ms / 2,000 ms |
コード長 | 2,506 bytes |
コンパイル時間 | 2,386 ms |
コンパイル使用メモリ | 163,548 KB |
実行使用メモリ | 13,312 KB |
最終ジャッジ日時 | 2024-11-22 07:57:32 |
合計ジャッジ時間 | 5,905 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 2 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 122 ms
13,184 KB |
testcase_05 | AC | 121 ms
13,184 KB |
testcase_06 | AC | 90 ms
8,576 KB |
testcase_07 | AC | 198 ms
13,184 KB |
testcase_08 | AC | 189 ms
13,312 KB |
testcase_09 | AC | 191 ms
13,184 KB |
testcase_10 | AC | 203 ms
13,312 KB |
testcase_11 | AC | 71 ms
7,808 KB |
testcase_12 | AC | 123 ms
10,496 KB |
testcase_13 | AC | 26 ms
5,632 KB |
testcase_14 | AC | 56 ms
7,168 KB |
testcase_15 | AC | 125 ms
10,752 KB |
testcase_16 | AC | 43 ms
7,040 KB |
testcase_17 | AC | 26 ms
5,248 KB |
testcase_18 | AC | 76 ms
8,448 KB |
testcase_19 | AC | 115 ms
9,856 KB |
testcase_20 | AC | 80 ms
8,320 KB |
testcase_21 | AC | 126 ms
10,240 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; /* clang-format off */ /* TYPES */ #define ll long long //~ #define pii pair<int, int> //~ #define pll pair<long long, long long> //~ #define vi vector<int> //~ #define vll vector<long long> //~ #define mii map<int, int> //~ #define si set<int> //~ #define sc set<char> /* FUNCTIONS */ //~ #define f(i,s,e) for(long long int i=s;i<e;i++) //~ #define cf(i,s,e) for(long long int i=s;i<=e;i++) //~ #define rf(i,e,s) for(long long int i=e-1;i>=s;i--) //~ #define pb push_back //~ #define eb emplace_back /* PRINTS */ //~ template <class T> //~ void print_v(vector<T> &v) { cout << "{"; for (auto x : v) cout << x << ","; cout << "\b}"; } //~ #define MOD 1000000007 //~ #define PI 3.1415926535897932384626433832795 //~ #define read(type) readInt<type>() //~ ll min(ll a,int b) { if (a<b) return a; return b; } //~ ll min(int a,ll b) { if (a<b) return a; return b; } //~ ll max(ll a,int b) { if (a>b) return a; return b; } //~ ll max(int a,ll b) { if (a>b) return a; return b; } //~ ll gcd(ll a,ll b) { if (b==0) return a; return gcd(b, a%b); } //~ ll lcm(ll a,ll b) { return a/gcd(a,b)*b; } //~ string to_upper(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='a' && a[i]<='z') a[i]-='a'-'A'; return a; } //~ string to_lower(string a) { for (int i=0;i<(int)a.size();++i) if (a[i]>='A' && a[i]<='Z') a[i]+='a'-'A'; return a; } //~ bool prime(ll a) { if (a==1) return 0; for (int i=2;i<=round(sqrt(a));++i) if (a%i==0) return 0; return 1; } //~ void yes() { cout<<"YES\n"; } //~ void no() { cout<<"NO\n"; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int N, M; auto distance = [] (int i, int j) { return std::abs(i-j); }; cin >> N >> M; int trees[N]; map<int, bool> treesPos; ll sum = 0; for(int i = 0; i < N; i++) { int a; cin >> a; trees[i] = a; treesPos.insert({a, true}); } for(int i = 0; i < M; i++) { ll f, b, w; cin >> f >> b >>w; if(treesPos[f]) { sum += w; continue; } int dis = upper_bound(trees, trees + N, f) - trees; if(dis > N-1) { dis = N-1; } int also = dis-1; if(also < 0) also = 0; int diff = min(abs(trees[dis] - f), abs(trees[also] - f)); // int diff = abs(*dis - f); // cout << f << " " << diff << "\n"; sum += max(b, w-diff); } cout << sum ; return 0; }