# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
5217 | 2014-02-18T05:12:20 Z | woqja125 | 사다리꼴 (balkan11_trapezoid) | C++ | 103 ms | 9712 KB |
#include<stdio.h> #include<algorithm> struct data { int a, b, n, t; } dat[200001]; struct coor { int *p; } Y[200001]; struct node { int max; int cnt; } IT[400001]; bool operator<(const coor &A, const coor &B) { return *A.p<*B.p; } bool operator<(const data &A, const data &B) { return A.a!=B.a?A.a<B.a:A.t<B.t; } int d[100001][2]; node getmax(int f, int r) { node re={ 0, 0 }; while(f<r) { if(f%2 == 1) { if(re.max == IT[f].max) re.cnt += IT[f].cnt; else if(re.max < IT[f].max) re = IT[f]; f++; } if(r%2 == 0) { if(re.max == IT[r].max) re.cnt += IT[r].cnt; else if(re.max < IT[r].max) re = IT[r]; r--; } f/=2; r/=2; } if(f==r) { if(re.max == IT[r].max) re.cnt += IT[r].cnt; else if(re.max < IT[r].max) re = IT[r]; } return re; } void init(int x) { while(x/=2) { if(IT[x*2].max == IT[x*2+1].max) { IT[x].max = IT[x*2].max; IT[x].cnt = IT[x*2].cnt + IT[x*2+1].cnt; } else if(IT[x*2].max < IT[x*2+1].max) { IT[x] = IT[x*2+1]; } else { IT[x] = IT[x*2]; } } } int main() { int n, i, a, b, c, D, base; node t; scanf("%d", &n); for(base = 1; base<2*n; base*=2); for (i = 1; i <= n; i++) { scanf("%d%d%d%d", &a, &b, &c, &D); dat[i*2-1].a = a; dat[i*2].a = b; dat[i*2-1].b = c; dat[i*2].b = D; dat[i*2-1].t = 0; dat[i*2].t = 1; Y[2*i-1].p = &dat[i*2-1].b; Y[2*i].p = &dat[i*2-1].b; } for(i=1; i<=2*n; i++) *Y[i].p = i; std::sort(dat+1, dat+1+2*n); IT[base].cnt = 1; init(base); for(i=1; i<=2*n; i++) { if(dat[i].t==0) { t = getmax(base, base+dat[i].b); d[dat[i].n][0] = t.max + 1; d[dat[i].n][1] = t.cnt; } else { IT[base + dat[i].b].max = d[dat[i].n][0]; IT[base + dat[i].b].cnt = d[dat[i].n][1]; init(base+dat[i].b); } } t = getmax(base, base+2*n); printf("%d %d", t.max, t.cnt); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 9712 KB | Output isn't correct |
2 | Incorrect | 0 ms | 9712 KB | Output isn't correct |
3 | Incorrect | 0 ms | 9712 KB | Output isn't correct |
4 | Incorrect | 0 ms | 9712 KB | Output isn't correct |
5 | Incorrect | 0 ms | 9712 KB | Output isn't correct |
6 | Incorrect | 3 ms | 9712 KB | Output isn't correct |
7 | Incorrect | 3 ms | 9712 KB | Output isn't correct |
8 | Incorrect | 3 ms | 9712 KB | Output isn't correct |
9 | Incorrect | 6 ms | 9712 KB | Output isn't correct |
10 | Incorrect | 13 ms | 9712 KB | Output isn't correct |
11 | Incorrect | 23 ms | 9712 KB | Output isn't correct |
12 | Incorrect | 49 ms | 9712 KB | Output isn't correct |
13 | Incorrect | 59 ms | 9712 KB | Output isn't correct |
14 | Runtime error | 56 ms | 9712 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
15 | Incorrect | 73 ms | 9712 KB | Output isn't correct |
16 | Incorrect | 96 ms | 9712 KB | Output isn't correct |
17 | Runtime error | 66 ms | 9712 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
18 | Incorrect | 79 ms | 9712 KB | Output isn't correct |
19 | Runtime error | 69 ms | 9712 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
20 | Incorrect | 103 ms | 9712 KB | Output isn't correct |