답안 #671556

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
671556 2022-12-13T08:14:25 Z Cutebol 금 캐기 (IZhO14_divide) C++17
0 / 100
0 ms 212 KB
#include <bits/stdc++.h>
 
using namespace std;
 
//void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
#define Scaramouche ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0);
#define int long long
#define itn int
#define endl "\n"
#define ff first
#define ss second
   
const int N = 1e6 + 5 ;
const int mod = 1e9 + 7 ;
const int inf = 1e7 ;

int n , mx ;
vector <int> x , g , a ;
vector <int> pref , prefs ;
map <int , vector <int> > mp ;

void solve(){
	
	cin >> n ;
	x.resize(n) , g.resize(n) , a.resize(n) , pref.resize(n) , prefs.resize(n) ;
	for ( int i = 0 ; i < n ; i ++ )
		cin >> x[i] >> g[i] >> a[i] ;
	pref[0] = a[0] ;
	prefs[0] = g[0] ;
	for ( int i = 1 ; i < n ; i ++ ){
		pref[i] = pref[i-1] ;
		pref[i] += x[i-1] - x[i] + a[i] ;
		prefs[i] = prefs[i-1] + g[i] ;
		mp[pref[i]].push_back(i) ;
	}
	set<int> cur ;
	for ( int i = 0 ; i < n ; i ++ ){
		int ans = prefs[i] ;
		if ( pref[i] < 0 ){
			if ( cur.lower_bound(pref[i]) == cur.end() )
				ans = g[i] ;
			else{
				ans -= prefs[*mp[*cur.lower_bound(-pref[i])].begin()] ;
			}
		}
//		cout << ans << ' ' ;
		mx = max( mx , ans ) ;
	}
	cout << mx << endl ;
}
 
signed main(){
//  fopn("talent") ;
    Scaramouche ;
    int t = 1 ;
//      cin >> t ;
    while ( t -- ) solve() ; 
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -