Submission #416698

#TimeUsernameProblemLanguageResultExecution timeMemory
416698REALITYNBAutobahn (COI21_autobahn)C++14
0 / 100
2 ms332 KiB
#include <bits/stdc++.h> #define int long long #define inf 1e12 #define all(a) a.begin(),a.end() using namespace std; signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); freopen("in.txt","r",stdin) ; int n,k,x ; cin>>n>>k>>x; vector<int> l(n) ,t(n) , r(n) , events ; for(int i=0;i<n;i++){ cin>>l[i]>>t[i]>>r[i] ; int le = l[i],re=r[i],rr = l[i]+t[i]-1 ; events.push_back(le); events.push_back(re); events.push_back(rr); events.push_back(re+1) ; events.push_back(rr+1) ; events.push_back(re-x+1) ; events.push_back(rr-x+1) ; events.push_back(le-x+1); events.push_back(re-x) ; events.push_back(rr-x) ; } events.push_back(inf) ; sort(all(events)) ; auto it = unique(all(events),[&](int a ,int b){return a==b;}) ; events.resize(distance(events.begin(),it)) ; vector<int> illegals(events.size()) ; vector<int> num(events.size()) ; for(int i=0;i<n;i++){ int j = lower_bound(all(events),l[i])-events.begin() ; num[j]++ ; int k = lower_bound(all(events),r[i]+1)-events.begin() ; num[k]-- ; } for(int i=0;i<n;i++){ int le = l[i],re=r[i] ,rr=l[i]+t[i]-1 ; if(rr<=re){ int j = lower_bound(all(events),rr+1)-events.begin(); illegals[j]++; j = lower_bound(all(events),re+1)-events.begin() ; illegals[j]--; } } for(int i=1;i<events.size();i++) num[i]+=num[i-1],illegals[i]+=illegals[i-1] ; int curl = events[0] , curr =-inf, val = 0 , j = 0 , ans = 0 ; /* for(int i=0;i<events.size();i++){ cout << "minute :" << events[i] << " " << num[i] << " "<< illegals[i] << endl ; }*/ int goal = 0 ; for(int i=0;i+1<events.size();i++){ curl=events[i] ; if(curr<=curl){ curr = curl ; val =((int)(num[i]>=k))*illegals[i]; j=i+1 ; } else{ val-=(events[i]-events[i-1])*(illegals[i-1])*((int)(num[i-1]>=k)) ; } while(1){ if(events[j]>x+curl-1){ val+=(curl+x-1-curr)*(illegals[j-1])*((int)(num[j-1]>=k)) ; curr = curl+x-1 ; break ; } else{ val+=(events[j]-1-curr)*(illegals[j-1])*((int)(num[j-1]>=k)) ; curr = events[j]-1 ; ++j; } } if(val>ans){ ans=val; goal = events[i] ; } /// cout <<events[i] << " " << val << " " << j << " " << curr << endl ; } cout << ans ; return 0; }

Compilation message (stderr)

autobahn.cpp: In function 'int main()':
autobahn.cpp:41:7: warning: unused variable 'le' [-Wunused-variable]
   41 |   int le = l[i],re=r[i] ,rr=l[i]+t[i]-1 ;
      |       ^~
autobahn.cpp:49:15: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   49 |  for(int i=1;i<events.size();i++) num[i]+=num[i-1],illegals[i]+=illegals[i-1] ;
      |              ~^~~~~~~~~~~~~~
autobahn.cpp:55:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |  for(int i=0;i+1<events.size();i++){
      |              ~~~^~~~~~~~~~~~~~
autobahn.cpp:54:5: warning: variable 'goal' set but not used [-Wunused-but-set-variable]
   54 | int goal = 0 ;
      |     ^~~~
autobahn.cpp:9:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |  freopen("in.txt","r",stdin) ;
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...