結果
問題 | No.2408 Lakes and Fish |
ユーザー | vjudge1 |
提出日時 | 2024-05-01 23:38:18 |
言語 | C++17(clang) (17.0.6 + boost 1.83.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,541 bytes |
コンパイル時間 | 2,961 ms |
コンパイル使用メモリ | 165,760 KB |
実行使用メモリ | 26,312 KB |
最終ジャッジ日時 | 2024-11-22 07:49:59 |
合計ジャッジ時間 | 55,211 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
10,496 KB |
testcase_01 | AC | 2 ms
17,792 KB |
testcase_02 | AC | 2 ms
10,496 KB |
testcase_03 | AC | 1 ms
13,768 KB |
testcase_04 | TLE | - |
testcase_05 | TLE | - |
testcase_06 | AC | 128 ms
18,048 KB |
testcase_07 | TLE | - |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | TLE | - |
testcase_11 | TLE | - |
testcase_12 | TLE | - |
testcase_13 | TLE | - |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | TLE | - |
testcase_17 | TLE | - |
testcase_18 | TLE | - |
testcase_19 | TLE | - |
testcase_20 | TLE | - |
testcase_21 | TLE | - |
ソースコード
#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; set<int> trees; map<int, bool> treesPos; ll sum = 0; for(int i = 0; i < N; i++) { int a; cin >> a; trees.insert(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; } auto dis = upper_bound(trees.begin(), trees.end(), f); if(dis == trees.end()) { dis--; } auto also = dis; if(also != trees.begin()) { also--; } int diff = min(abs(*dis - f), abs(*also - f)); // int diff = abs(*dis - f); // cout << f << " " << diff << "\n"; sum += max(b, w-diff); } cout << sum ; return 0; }