Submission #543797

#TimeUsernameProblemLanguageResultExecution timeMemory
543797levladiatorAutobahn (COI21_autobahn)C++14
50 / 100
31 ms3632 KiB
#include <bits/stdc++.h> #define pb push_back #define pf push_front #define ll long long #define ull unsigned long long #define pii pair<int,int> #define pll pair<ll,ll> #define EPSILON 0.000001 #define CH (*s-'a') using namespace std; const ll NMAX = 1e5 + 5, INF = 1e18, MOD = 1e9 + 7, MMAX = 1e2 + 5, inf = 1e9; ifstream fin("sufle.in"); ofstream fout("sufle.out"); int N,K,X; int aib1[NMAX],aib2[NMAX]; void add(int a[],int pos,int val) { for(int i=pos;i<=100000;i+=i&(-i)) { a[i]+=val; } } ll sum(int a[],int pos) { ll res=0; for(int i=pos;i>0;i-=i&(-i)) { res+=a[i]; } return res; } int main() { cin.tie ( 0 )->sync_with_stdio ( 0 ); cin.tie ( NULL ); cout.tie ( NULL ); cin>>N>>K>>X; for(int i=1;i<=N;i++) { int l,t,r; cin>>l>>t>>r; add(aib1,l,1); add(aib1,r+1,-1); add(aib2,l+t,1); add(aib2,r+1,-1); } ll best=0,S=0; for(int i=1;i<=X;i++) { int nrp=sum(aib1,i); if(nrp>=K) { S+=sum(aib2,i); } } best=S; for(int i=X+1;i<=100000;i++) { int nrp=sum(aib1,i); if(nrp>=K) { S+=sum(aib2,i); } nrp=sum(aib1,i-X); if(nrp>=K) { S-=sum(aib2,i-X); } best=max(best,S); } cout<<best; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...