Submission #12033

#TimeUsernameProblemLanguageResultExecution timeMemory
12033gs14004trapezoid (balkan11_trapezoid)C++98
50 / 100
500 ms7812 KiB
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int n; int a[100005], b[100005], c[100005], d[100005]; vector<int> vu, vd; int dp[100005], cnt[100005]; struct seg{int a,b,c,d;}st[100005]; bool cmp(seg a, seg b){return a.a < b.a;} int main(){ scanf("%d",&n); for (int i=0; i<n; i++) { scanf("%d %d %d %d",&a[i],&b[i],&c[i],&d[i]); vu.push_back(a[i]); vu.push_back(b[i]); vd.push_back(c[i]); vd.push_back(d[i]); } sort(vu.begin(),vu.end()); sort(vd.begin(),vd.end()); for (int i=0; i<n; i++) { a[i] = (int)(lower_bound(vu.begin(),vu.end(),a[i]) - vu.begin()); b[i] = (int)(lower_bound(vu.begin(),vu.end(),b[i]) - vu.begin()); c[i] = (int)(lower_bound(vd.begin(),vd.end(),c[i]) - vd.begin()); d[i] = (int)(lower_bound(vd.begin(),vd.end(),d[i]) - vd.begin()); st[i] = {a[i],b[i],c[i],d[i]}; } sort(st,st+n,cmp); for (int i=0; i<n; i++) { a[i] = st[i].a; b[i] = st[i].b; c[i] = st[i].c; d[i] = st[i].d; } for (int i=0; i<n; i++) { dp[i] = 1; for (int j=0; j<i; j++) { if(b[j] < a[i] && d[j] < c[i]){ dp[i] = max(dp[i],dp[j]+1); } } for (int j=0; j<i; j++) { if(dp[j] + 1 == dp[i] && b[j] < a[i] && d[j] < c[i]){ cnt[i] += cnt[j]; cnt[i] %= 30013; } } if(dp[i] == 1) cnt[i] = 1; } int mcnt = *max_element(dp,dp+n); int rcnt = 0; for (int i=0; i<n; i++) { if(dp[i] == mcnt){ rcnt += cnt[i]; rcnt %= 30013; } } printf("%d %d",mcnt,rcnt); }

Compilation message (stderr)

trapezoid.cpp: In function 'int main()':
trapezoid.cpp:30:37: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
         st[i] = {a[i],b[i],c[i],d[i]};
                                     ^
trapezoid.cpp:30:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
         st[i] = {a[i],b[i],c[i],d[i]};
               ^
trapezoid.cpp:15:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
trapezoid.cpp:17:53: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d %d",&a[i],&b[i],&c[i],&d[i]);
                                                     ^
#Verdict Execution timeMemoryGrader output
Fetching results...