Submission #197693

#TimeUsernameProblemLanguageResultExecution timeMemory
197693ksmzzang2003Bulldozer (JOI17_bulldozer)C11
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld ; typedef pair <ll,ll> pll ; #define eb emplace_back #define all(x) (x).begin(),(x).end() #define MAXN 5003 const ll llinf = 0x3f3f3f3f3f3f3f3f; struct po { ll x,y; ll co; bool operator <(po &r) { return pll(x,y) < pll(r.x,r.y); } } arr[MAXN]; struct line { ll i,j; long double a; line(int i,int j,ld a):i(i),j(j),a(a) {} bool operator<(line &r) { return a>r.a; } }; vector <line> larr; ll N; struct node { ll lsum,rsum,sum,ans; node() { lsum = rsum = sum = ans =0 ; } node(ll l,ll r,ll s,ll a) { lsum = l; rsum =r; sum =s ; ans = a; } }; struct seg { node tree[5003*4]; node merge(node l,node r) { node ret; ret.lsum = max(l.lsum,l.sum + r.lsum); ret.rsum = max(r.rsum,l.rsum + r.sum); ret.sum = l.sum + r.sum; ret.ans = max({l.ans,r.ans,ret.sum,l.rsum + r.lsum}); return ret; } node query(ll nodE,ll ns,ll ne,ll s,ll e) { if(e<ns || ne <s ) return node(0,0,0,0); if(s<=ns &&ne <=e) return tree[nodE]; return merge(query(nodE*2,ns,ns + ne >>1,s,e),query(nodE*2+1,(ns+ne>>1) + 1,ne,s,e)); } void update(ll nodE,ll ns,ll ne,ll id,node k) { if(ne < id || id < ns) return; if(ns == ne) { tree[nodE] = k; return ; } update(nodE*2,ns,(ns+ne)/2,id,k); update(nodE*2+1,(ns+ne)/2+1,ne,id,k); tree[nodE] = merge(tree[nodE*2],tree[nodE*2+1]); } } SEG; int ind[5003]; int main() { scanf("%lld",&N); for(ll i=1; i<=N; i++) scanf("%lld %lld %lld", &arr[i].x,&arr[i].y,&arr[i].co); sort(arr+1,arr+1+N); for(ll i=1; i<=N; i++) { for(ll j=i+1; j<=N; j++) { long double deltax = (ld)arr[i].x - arr[j].x; long double deltay = (ld)arr[i].y - arr[j].y; if(deltay==0) deltax = deltay>=0? 1e-18 : -1e-18; larr.eb(i,j,deltay/deltax); } } sort(larr.begin(),larr.end()); for(ll i=1; i<=N; i++) { ll C = max(0LL,arr[i].co); SEG.update(1,1,N,i,node(C,C,arr[i].co,C)); } ll res = SEG.query(1,1,N,1,N).ans; for(int i=1; i<=N; i++) ind[i] =i ; for(int i=0; i<larr.size(); i++) { int e; for(int j=i; j<larr.size(); j++) { if(larr[i].a == larr[j].a) e = j; else break; } for(int j = i ; j<=e; j++) { auto it = larr[j]; ll l = it.i, r = it.j ; node x = SEG.query(1,1,N,ind[l],ind[l]); node y = SEG.query(1,1,N,ind[r],ind[r]); SEG.update(1,1,N,ind[r],x); SEG.update(1,1,N,ind[l],y); swap(ind[l],ind[r]); } res = max(res,SEG.query(1,1,N,1,N).ans); i=e; } printf("%lld",res); }

Compilation message (stderr)

bulldozer.c:1:10: fatal error: bits/stdc++.h: No such file or directory
 #include <bits/stdc++.h>
          ^~~~~~~~~~~~~~~
compilation terminated.