Submission #99318

#TimeUsernameProblemLanguageResultExecution timeMemory
99318TadijaSebezArranging Tickets (JOI17_arranging_tickets)C++11
0 / 100
3 ms384 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N=200050; const int M=2*N; const int inf=1e9+7; int ls[M],rs[M],tsz,root,lzy[M],mx[M]; void Add(int &c, int ss, int se, int qs, int qe, int f) { if(qs>qe || qs>se || ss>qe) return; if(!c) c=++tsz; if(qs<=ss && qe>=se){ lzy[c]+=f;mx[c]+=f;return;} int mid=ss+se>>1; Add(ls[c],ss,mid,qs,qe,f); Add(rs[c],mid+1,se,qs,qe,f); mx[c]=max(mx[ls[c]],mx[rs[c]])+lzy[c]; } int Get(int c, int ss, int se, int qs, int qe) { if(qs>qe || qs>se || ss>qe) return -inf; if(qs<=ss && qe>=se) return mx[c]; int mid=ss+se>>1; return max(Get(ls[c],ss,mid,qs,qe),Get(rs[c],mid+1,se,qs,qe))+lzy[c]; } int a[N],b[N],c[N]; int main() { int n,m,i; scanf("%i %i",&n,&m); ll ans=0; for(i=1;i<=m;i++) { scanf("%i %i %i",&a[i],&b[i],&c[i]); ans+=c[i]/2; if(a[i]>b[i]) swap(a[i],b[i]); b[i]--; if(c[i]&1) Add(root,1,n,a[i],b[i],1); } for(i=1;i<=m;i++) if(c[i]&1) { int pre=mx[root],nxt=max(Get(root,1,n,1,a[i]-1),Get(root,1,n,b[i]+1,n))+1; if(pre>nxt) Add(root,1,n,1,n,1),Add(root,1,n,a[i],b[i],-2); } ans+=mx[root]; printf("%lld\n",ans); return 0; }

Compilation message (stderr)

arranging_tickets.cpp: In function 'int main()':
arranging_tickets.cpp:29:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%i %i",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~
arranging_tickets.cpp:33:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%i %i %i",&a[i],&b[i],&c[i]);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...