답안 #1063233

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1063233 2024-08-17T15:37:31 Z PotatoTheWarriorFRTT Bulldozer (JOI17_bulldozer) C++17
0 / 100
21 ms 600 KB
#include <bits/stdc++.h>
using namespace std;
 
long long MOD = 1000000000+7;
typedef long long ll;
typedef pair<pair<ll, ll>, pair<ll, ll>> Point;

int log2(int x) {
    int ln = -1;
    while(x > 0) {
        ln++;
        x/=2;
    }
    return ln;
}
 
bool comp(Point p1, Point p2) {
    return p1.second.second < p2.second.second;
}

ll max_sub_sum(vector<ll> &vals) {
    ll S[vals.size()+1];
    ll M[vals.size()+1];
    S[0] = 0;
    M[0] = 0;
    for(int i=1;i<=vals.size();i++) {
        S[i] = S[i-1]+vals[i-1];
        M[i] = min(M[i-1], S[i]);
    }
    ll ans = 0;
    for(int i=0;i<vals.size();i++) {
        ans = max(ans, S[i+1] - M[i+1]);
    }
    return ans;
}

void solve() {
    int n; cin >> n;
    vector<Point> points;
    for(int i=0;i<n;i++) {
        Point p;
        cin >> p.first.first >> p.first.second >> p.second.first;
        points.push_back(p);
    }
    ll ans = 0;
    for(int i=0;i<n;i++) {
        for(int j=i+1;j<n;j++) {
            // pair<ll, ll> dir = {points[i].first.first - points[j].first.first, points[i].first.second - points[j].first.second};
            pair<ll, ll> dir = {1, 0};
            if(dir.first != 0 || dir.second != 0) {
                for(int k=0;k<n;k++) {
                    points[k].second.second = dir.first * points[k].first.first + dir.second * points[k].first.second;
                }
                sort(points.begin(), points.end(), comp);
                vector<ll> vals;
                for(int k=0;k<n;k++) {
                    vals.push_back(0);
                    ll X = points[k].second.second;
                    while(points[k].second.second == X) {
                        vals[vals.size()-1]+=points[k].second.first;
                        k++;
                    }
                    k--;
                }

                ans = max(ans, max_sub_sum(vals));
            }
        }
    }
    cout << ans << endl;
}
 
int main()   {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    // int t;
    // cin >> t;
    // while (t--)
        solve();
    char sdhfn;
    cin >> sdhfn;
}

Compilation message

bulldozer.cpp: In function 'll max_sub_sum(std::vector<long long int>&)':
bulldozer.cpp:26:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int i=1;i<=vals.size();i++) {
      |                 ~^~~~~~~~~~~~~
bulldozer.cpp:31:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |     for(int i=0;i<vals.size();i++) {
      |                 ~^~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 348 KB Output is correct
2 Correct 15 ms 460 KB Output is correct
3 Correct 21 ms 460 KB Output is correct
4 Correct 15 ms 348 KB Output is correct
5 Correct 15 ms 468 KB Output is correct
6 Correct 15 ms 348 KB Output is correct
7 Correct 20 ms 348 KB Output is correct
8 Correct 21 ms 456 KB Output is correct
9 Correct 16 ms 348 KB Output is correct
10 Correct 15 ms 464 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Incorrect 0 ms 348 KB Output isn't correct
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 600 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 600 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 16 ms 600 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 348 KB Output is correct
2 Correct 15 ms 460 KB Output is correct
3 Correct 21 ms 460 KB Output is correct
4 Correct 15 ms 348 KB Output is correct
5 Correct 15 ms 468 KB Output is correct
6 Correct 15 ms 348 KB Output is correct
7 Correct 20 ms 348 KB Output is correct
8 Correct 21 ms 456 KB Output is correct
9 Correct 16 ms 348 KB Output is correct
10 Correct 15 ms 464 KB Output is correct
11 Correct 0 ms 344 KB Output is correct
12 Incorrect 0 ms 348 KB Output isn't correct
13 Halted 0 ms 0 KB -