QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#784884 | #5144. Set of Intervals | qlwpc | WA | 3ms | 5928kb | C++14 | 2.6kb | 2024-11-26 16:14:06 | 2024-11-26 16:14:09 |
Judging History
answer
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
#include<string>
const int N = 600300;
const int mod = 998244353;
using ll = long long;
using namespace std;
using pii = pair<int,int>;
const int INF = 0x3f3f3f3f;
int read(){
int x=0,flag=1;char c;
while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;
while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
return x*flag;
}
int l[N],r[N];
int main()
{
int T=read();
while(T--)
{
int n=read();
for (int i=1;i<=n;++i) l[i]=read(),r[i]=read();
if (n==1) printf("1\n");
else if (n==2)
{
ll ans=0;
if (l[1]>l[2]) swap(l[1],l[2]), swap(r[1],r[2]);
if (r[1]<l[2]) ans = 1ll*(r[1]-l[1]+1)*(r[2]-l[2]+1);
else if (r[1]<=r[2])
{// l1 l2 r1 r2
ans = 1ll*(l[2]-l[1])*(r[2]-l[2]+1) + 1ll*(r[1]-l[2]+1)*(r[1]-l[2])/2 +
1ll*(r[2]-r[1])*(r[1]-l[1]+1);
}else
{// l1 l2 r2 r1
int L=l[1],R=r[1],SL=l[2],SR=r[2];
ans = (SR-SL+1ll)*(SR-SL)/2 + 1ll*(SR-SL+1)*(SL-L+R-SR);
}
printf("%lld\n",ans);
}else
{
ll ans=0;
int L=INF,L1=0,R0=INF,R=0,SL=INF,SR=0;
int Lidx=0,Ridx=0;
for (int i=1;i<=n;++i)
{
if (l[i]<L)
{
if (Lidx!=Ridx)
SL=min(L,SL), SR=max(SR, L1);
L=l[i];L1=r[i];
Lidx=i;
}
else if (r[i]>R||r[i]==R&&Ridx==Lidx)
{
if (Ridx!=Lidx)
SR=max(R, SR), SL=min(SL, R0);
R=r[i]; R0=l[i];
Ridx=i;
}
else {
if (r[i]>SR) SR=r[i];
if (l[i]<SL) SL=l[i];
}
}
//printf("L=%d R=%d SL=%d SR=%d\n",L,R,SL,SR);
if (Ridx!=Lidx)
{
// L , SL , SR, R
ans = (SR-SL+1ll)*(SR-SL)/2 + 1ll*(SR-SL+1)*(SL-L+R-SR);
// [L, SR] [R0, R]
int TL=max(L1,SR), TR=min(SL,R0);
// [L, TL] [TR, R]
ans += 1ll*(min(TL+1, SL)-L) * (R-max(SR, TR-1));
}else
{
ans = (SR-SL+1ll)*(SR-SL)/2 + 1ll*(SR-SL+1)*(SL-L+R-SR);
}
printf("%lld\n",ans);
}
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5928kb
input:
4 1 1 1000000000 2 1 1000000000 1 1000000000 4 1 2 3 4 5 6 7 8 4 1 3 2 4 5 8 6 7
output:
1 499999999500000000 26 28
result:
ok 4 number(s): "1 499999999500000000 26 28"
Test #2:
score: 0
Accepted
time: 0ms
memory: 5736kb
input:
10000 1 778216842 910688403 1 513404058 890988011 1 1 1000000000 1 1 1000000000 1 758932694 848837772 1 516433381 715411928 1 1 1000000000 1 1 1000000000 1 1 1000000000 1 1 1000000000 1 1 1000000000 1 652548522 898071173 1 1 1000000000 1 509357508 603420032 1 1 1000000000 1 657294869 887475066 1 1 1...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 10000 numbers
Test #3:
score: -100
Wrong Answer
time: 3ms
memory: 5884kb
input:
10000 2 427286995 863604876 582970459 874563920 2 181948005 565025282 799528580 848659925 2 1 1000000000 716032287 836380611 2 383809946 544540272 520881396 990456979 2 156308569 178412791 731100211 963724967 2 426113388 802990296 556666621 560014605 2 1 1000000000 575838571 811122140 2 255734272 64...
output:
89555745253519329 18821102290156188 113106465274673025 136317615532971115 5141989504048811 1256173734724260 207604390726385765 84029959076101827 37024984393194673 66477540333968810 22573394495301601 143688903920213372 166852999281224709 3932968549941246 69893746982274994 49459548807361176 7005773885...
result:
wrong answer 1st numbers differ - expected: '87849603321470913', found: '89555745253519329'